【发布时间】:2021-04-16 09:23:52
【问题描述】:
当我查询表 TEST_RUA 时,我有以下两个表:
select CLASS, ID_LL, ID_UU, TKR from TEST_RUA where ID_UU= 'GV9999B12M0'
它返回:
CLASS ID_LL ID_UU TKR
Bond (null) GV9999B12M0 WIB
当我查询表TEST_RUA_MER时:
select CLASS, ID_LL, ID_UU, TKR from TEST_RUA_MER where ID_UU= 'GV9999B12M0'
它返回:
CLASS ID_LL ID_UU TKR
Bond (null) GV9999B12M0 WIB
您可以看到ID_UU= 'GV9999B12M0' 所在的表的两个值相同。表 TEST_RUA_MER 在列 ID_LL, ID_UU, TKR 上具有唯一索引。
现在我有下面的合并查询,它抛出错误为ORA-00001: unique constraint violated,我不明白如何避免这个错误,因为两个表值都相同,那么在这种情况下,这个合并查询应该尝试更新而不是插入表中TEST_RUA_MER.
merge into TEST_RUA_MER h using (
select distinct r.CLASS, r.ID_LL, r.ID_UU, r.TKR from TEST_RUA r ) s
on (s.ID_LL=h.ID_LL and s.ID_UU=h.ID_UU and s.TKR=h.TKR) when matched then
update set h.CLASS = s.CLASS, h.ID_LL = s.ID_LL, h.ID_UU = s.ID_UU, h.TKR = s.TKR
when not matched then insert values (s.CLASS, s.ID_LL, s.ID_UU, s.TKR);
【问题讨论】:
-
我现在已经更正了这个问题
标签: sql oracle merge unique-constraint