我正在尝试在少于10000行上运行以下代码,但我正在
ORA-00001:违反了唯一约束(constraint_name)(非意外)。
UPDATE table1
SET EMAILADRESSE = replace(EMAILADRESSE,'@domain1.no','@domain2.no')
WHERE EMAILADRESSE LIKE '%@domain1.no' ;
尝试IGNORE_DUP_KEY
,但据我的研究显示,oracle / SQL * PLUS不支持此功能。你有替代方案吗?
答案 0 :(得分:1)
另一个NOT EXISTS
!
UPDATE table1 t1
SET EMAILADRESSE = replace(EMAILADRESSE,'@domain1.no','@domain2.no')
WHERE EMAILADRESSE LIKE '%@domain1.no'
AND NOT EXISTS
(SELECT 'X' FROM table1 t2 WHERE t2.EMAILADRESSE = replace(t1.EMAILADRESSE,'@domain1.no','@domain2.no'));
答案 1 :(得分:0)
首先,看来异常消息EMAILADRESSE列具有唯一约束。您正尝试通过更改已存在至少一个已替换域名的电子邮件地址的电子邮件域来更新table1。
UPDATE table1
SET EMAILADRESSE = replace(EMAILADRESSE,'@domain1.no','@domain2.no')
WHERE EMAILADRESSE LIKE '%@domain1.no' AND replace(EMAILADRESSE,'@domain1.no','@domain2.no') NOT IN (SELECT EMAILADRESSE FROM table1)