Oracle-Trigger跳过重复值

时间:2017-10-16 10:55:12

标签: oracle11g triggers

我有一个Oracle CSV批量导入脚本。担心该文件可能包含逻辑上相同的数据,因此会引发唯一的密钥约束违规。

所以我认为触发器可能会起作用,只有在新的时候插入数据。这是我的触发器。

create or replace trigger no_double
before insert or update on test_table
for each row
declare
  checkval number;
begin
  select count(1) into checkval from test_table
  where keyvalue = :new.keyvalue
  if (checkval = 0) then
    insert into test_table(keyvalue, field1) 
    values (:new.keyvalue, :new.field1);
  end if;
end;

但是当然,一旦脚本实际向 test_table 插入新值,触发器就会重新触发,依此类推。

一种解决方法可能是在插入之后引入第二个表并在上复制数据。但是我希望有一个更优雅的解决方案,所以(如果确实可能)我怎样才能避免在数据库层插入重复的值(无声跳过也可以。)

0 个答案:

没有答案