【发布时间】:2015-05-31 17:01:10
【问题描述】:
经过深思熟虑后完全重新编辑。最初我希望与单独的 MERGE 语句结合使用,但忘记了。需要明确的是,这不是一个更新。如果找不到现有的匹配记录,我想添加一条新记录。
假设mytable 包含列foo、bar、baz。其中(如果与性能相关)foo 和 bar 一起唯一标识记录。
a) 如果不是 foo 和 bar,则插入 foo、bar、baz
b) 否则,如果 foo 和 bar 但 baz<new> 不等于 baz<old> 则插入 foo、bar、baz<new>
c) 否则,如果所有三个都匹配,则什么也不做
请注意,b 同样是一条新记录,而不是更新。本质上,这是对baz 的日志记录更改。
作为额外的奖励,如果我可以让 MERGE 语句(到 my_second_table)只尝试在 a 和 b 上进行合并,那就太好了,因为 case c 意味着 baz 因此没有改变我们不需要碰另一张桌子。但我知道你不可能拥有一切。
为什么他们不能像 Mongo 那样只使用 JavaScript...?
【问题讨论】:
-
您的示例中没有 PL/SQL
-
我只是想出了一个 PL/SQL 过程,我需要什么来扩展它来做我需要的,不是吗?至少这是谷歌搜索引导我的方向。