【问题标题】:Replace duplicate primary key rows without using Replace function不使用 Replace 函数替换重复的主键行
【发布时间】:2015-10-30 19:17:10
【问题描述】:

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

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

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

谢谢大家

【问题讨论】:

  • Oracle 不支持ON DUPLICATE KEY UPDATE。你确定你没有使用 MySQL 吗?请正确标记和表达您的问题。
  • 好吧,我还是不能使用它。为了清楚起见,我删除了参考。

标签: sql oracle triggers constraints


【解决方案1】:

您可以通过在插入前删除现有行来实现。因此,您必须使用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工作。

【讨论】:

  • 就是这个。谢谢!
猜你喜欢
  • 1970-01-01
  • 2015-10-11
  • 2014-07-03
  • 2019-01-08
  • 1970-01-01
  • 2021-05-02
  • 2021-12-10
  • 2019-12-17
  • 1970-01-01
相关资源
最近更新 更多