不使用 Replace 函数替换重复的主键行

Replace duplicate primary key rows without using Replace function

我有一种情况,我被传递插入语句到我的 table EXAMPLE_TABLE。我在 ID 列上有我的主键,每当插入与 table 中的当前值具有相同 ID 的行时,我想替换该行。

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

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

谢谢大家

您可以通过在插入前删除现有行来实现。因此,您必须使用将在插入新行之前触发的 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.