我有一个对(uid,client_fact)有唯一约束的表。当我尝试更新 client_fact它会在约束上引发错误,这很明显,因为如果我说将client_fact更新为值2,其中user_id为1,并且如果已经存在这两列的组合,则会引发异常。但有什么方法可以跳过它并继续更新其他人。
我正在使用的查询是
UPDATE user_ft
SET client_fact_id = 779,
WHERE client_fact_id in (select client_fact_id
from user_ft
where client_fact_id = 778
and updated_date::date =< '2015-05-28')
and not exists (select uid ,client_fact_id
from user_ft
where client_fact_id = 779)
我使用not exists子句来处理这个案例,我已经将用户和factid组合在一起了。它运行成功,但没有更新任何内容。
答案 0 :(得分:0)
得到了...... 我们不需要使用不存在。 ..因为这会导致跳过所有行,我会查询我的查询以查看具有此组合的表中的用户是否不在查询中考虑该用户。见下面更正的查询
UPDATE user_ft SET client_fact_id = 779
WHERE client_fact_id in (select client_fact_id from user_ft
where client_fact_id = 778 and
updated_date::date =< '2015-05-28')
and uid not in (select uid
from user_ft
where client_fact_id = 779)
谢谢大家