【发布时间】:2016-04-11 06:56:49
【问题描述】:
我的 COBA 表有 3 个字段,它们是 NOMER、NAMA、KETERANGAN。在表中存在这样的数据:
我想在该表中插入另一个值,但是如何防止在 oracle 中重复插入查询数据? 我试过使用 WHERE NOT EXIST,这是我的查询:
INSERT INTO COBA(NOMER, NAMA, KETERANGAN)
(SELECT '2','FIAN', 'JEKULO'
FROM DUAL
WHERE NOT EXISTS (SELECT * FROM COBA WHERE NOMER='1' AND NAMA='AMIN' AND KETERANGAN='JEPARA'))
该查询不起作用....任何建议给我,...谢谢...
【问题讨论】:
-
在字段上创建唯一约束:techonthenet.com/oracle/unique.php。如果
NOMER是主键,那么您将在NOMER上创建一个PK,并在另外两个上创建一个唯一约束。如果你在所有三个上创建它,那么你可以有一个重复的NOMER -
是否有其他方法可以在不创建唯一约束的情况下解决此问题?
-
是的,请确保子查询实际检查您要插入的字段... ps:NOMER 列是可疑的。如果是数字,请传递数字。
-
您是否有不想使用唯一约束的原因? 99% 的数据库程序员认为他们是个好主意。它们还有助于提高性能,因为它们为查询规划器提供了有关数据的提示。
-
@Nick.McDermaid 你是对的,使用唯一约束是防止重复值的最佳选择,...但是我不使用它的原因是因为它出现了
ORA-00001: unique constraint (PAYROLL.COBA_UNIQUE)违反了当我运行相同的值并且出现错误通知时,...在将数据插入我的项目时,我不会用户显示该错误..