Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 只插入一次_Oracle_Insert - Fatal编程技术网

Oracle 只插入一次

Oracle 只插入一次,oracle,insert,Oracle,Insert,我想确保在执行查询时,它只适合一次 INSERT INTO SERVICEPAYANT ( TYPE_FLUX, DELAI ) VALUES (160,'9999'); INSERT INTO SERVICEPAYANT ( TYPE_FLUX, DELAI ) VALUES (161,'9999'); INSERT INTO SERVICEPAYANT ( TYPE_FLUX, DELAI ) VALUES (162,'9999'); INSERT INTO SERVICEPAYANT (

我想确保在执行查询时,它只适合一次

INSERT INTO SERVICEPAYANT ( TYPE_FLUX, DELAI ) VALUES (160,'9999');
INSERT INTO SERVICEPAYANT ( TYPE_FLUX, DELAI ) VALUES (161,'9999');
INSERT INTO SERVICEPAYANT ( TYPE_FLUX, DELAI ) VALUES (162,'9999');
INSERT INTO SERVICEPAYANT ( TYPE_FLUX, DELAI ) VALUES (163,'9999');

我可以认为这两列的组合是您的自然键吗?如果是这样,您需要唯一性约束,这将取决于您的数据库实现。

您必须将列
TYPE\u FLUX
DELAI
标记为
唯一键
,如果您已经在表中的其他列上有
主键
。当您在列
TYPE\u FLUX
agin中输入
161
时会出现错误,或者当您在列
DELAI
中再次输入
'9999'
时会出现错误


如果您希望两列的组合是唯一的,那么创建一个组合的
唯一键
,这将永远不会让
161和'9999'
一起被再次输入表中,我无法更改此表上的约束谢谢您的回答,但如何通过多次插入来管理它?创建一个过程并在该参数中传递参数类型_FLUX,DELAI。现在,在该过程中使用查询poste dby me,并用查询中的参数替换这些值。请注意,如果有多个并发会话,这不会停止插入重复的值。@Jeffrey,我已经告诉OP使用SP插入记录,以完全保证不会有重复数据。@Romil-否。在存储过程中执行此插入操作不会阻止重复记录的插入。如果要防止重复插入,则您(或其他人)必须向表中添加约束。约束对所有查询都强制执行,而不仅仅是那些在插入之前费心检查是否存在的查询!
INSERT INTO SERVICEPAYANT 
            (TYPE_FLUX, 
             DELAI) 
SELECT 161, 
       '9999' 
FROM   dual  
WHERE  NOT EXISTS (SELECT 1 
                   FROM   SERVICEPAYANT 
                   WHERE  TYPE_FLUX = 161 
                          AND DELAI = '9999')