只插入一次

时间:2012-05-29 14:38:51

标签: 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 ( TYPE_FLUX, DELAI ) VALUES (163,'9999');

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

如果您在表格中的其他列上已有TYPE_FLUX,则必须将列DELAIUNIQUE KEY标记为PRIMARY KEY。当您在161栏中输入TYPE_FLUX时出现错误,或者当您再次在'9999'栏中输入DELAI时出现错误。

如果您希望两列的组合是唯一的,那么创建一个合并的UNIQUE KEY,这将永远不会让161 and '9999'再次输入表中 TOGETHER

答案 2 :(得分:0)

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')