替换重复的主键行而不使用替换功能

时间:2015-08-07 11:01:24

标签: sql oracle triggers constraints

我遇到的情况是我将插入语句传递到表EXAMPLE_TABLE。我在列ID上有我的主键,每当插入一个与表中当前值具有相同ID的行时,我想替换此行。

我无法控制插入数据的函数 - 它始终是INSERT语句。

如何使用约束或触发器(或类似的)来实现?

全部谢谢

1 个答案:

答案 0 :(得分:2)

您可以通过在插入之前删除现有行来实现它。因此,您必须使用在插入新行之前将被触发的Trigger。您可以尝试以下解决方法。

CREATE OR REPLACE TRIGGER EXAMPLE_TABLE_TRIGGER1 
BEFORE INSERT ON EXAMPLE_TABLE 
for each row
declare
BEGIN
  delete from EXAMPLE_TABLE where id=:new.id;
END;

每当新行即将插入时,将调用此Trigger,它将删除前一行,以便您的插入函数正常工作,更确切地说,它将作为update工作。