我有三个领域的COBA表,他们是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'))
该查询无效....对我的任何建议,...谢谢......
答案 0 :(得分:2)
使用唯一约束:
ALTER TABLE COBA ADD CONSTRAINT uni_c UNIQUE (NOMER, NAMA, KETERANGAN)
答案 1 :(得分:1)
如果您不想使用唯一约束,则可以在插入时left join
检查nomer
是否存在于目标中,如下所示。通过此方法,即使表中已存在记录,也不会出现错误。它将被跳过。
insert into coba
(select s.nomer,s.nama,s.ket from
(select 1 as nomer,'AA' as nama,'bb' as ket from dual) s
left join
coba t
on s.nomer=t.nomer
where t.nomer is null
);
我在MySQL中创建了一个小提琴(因为Oracle不工作),但功能相同。正如您在下面的示例中所看到的,nomer
= 1
未再次插入。
请参阅此处的小提琴演示