如何在只读源表和更新表之间共享ID

问题描述 投票:0回答:2

我有两个表:第一个A是只读的,源表,第二个B在应用程序流中正在更新(插入新数据)。假设我要用来自A的新源数据填充表B,并且B已通过某些插入操作“获取了”一个ID。如何预防此类事件?

database oracle indexing primary-key
2个回答
0
投票

您正在寻找合并语法,这是upsert查询(又名更新/插入)的Oracle实现。

它像这样:

merge into tableb b
using tablea a on (a.id = b.id)
when matched then
    update set b.col1 = a.col1
when not matched then
    insert(id, col1, col2, col3) values(a.id, a.col1, a.col2, a.col3)

using子句有一个on部分,用于定义表之间的连接条件。

matched子句描述了发生冲突时的处理方法:在这里,您可以更新其他一些列。

not matched子句执行实际的插入。


0
投票

感谢@GMB回答。我知道合并语法。我的意思是这种情况:在表源A中,我具有唯一的ID,我将具有自动生成的相同ID号的行插入表B中。但是在真实的行A <>行B中。那应该不会发生。有任何想法吗?

© www.soinside.com 2019 - 2024. All rights reserved.