【发布时间】:2022-09-28 01:16:59
【问题描述】:
有没有办法对不违反键的任何记录执行 sql 更新。
UPDATE NmsSubscription SET iRecipientId = 13251076 WHERE iRecipientId = 13250626\";
26/09/2022 15:54:44 js15 WDB-200001 SQL 语句 \'UPDATE NmsSubscription SET iRecipientId = 13251076 其中 iRecipientId = 13250626\' 无法执行。 26/09/2022 15:54:44 js15 PGS-220000 PostgreSQL 错误:错误:重复键值违反唯一性 约束 \"nmssubscription_subscription\" DETAIL: Key (iserviceid, irecipientid)=(3218161, 13251076) 已经存在。 .
在这个表中,我成功更新了 10 条记录,但是用户已经注册了一个服务,因此出现了错误,对任何不存在的记录执行更新的最佳方法是什么?
用户订阅13250626
用户订阅13251076
我想将所有订阅从收件人 13250626 分配给收件人 13251076,后者尚未订阅。
此外,我正在尝试计算订阅收件人 13251076 未注册到该收件人 13250626 但我没有得到正确的结果。
SELECT COUNT(*) FROM NmsSubscription WHERE iRecipientId = 13250626 AND NOT EXISTS (SELECT * FROM NmsSubscription WHERE iRecipientId = 13251076)\'
-
AND NOT EXISTS (SELECT 1 from NmsSubscription where RecipiendIT=newId)。不要在列名中使用存储类型前缀,自 2000 年以来这被认为是一个丑陋的错误。如果从 int 变为 long 或 serial,为什么要更改列名?数据没有改变。关系没有改变 -
如果我使用 select *
UPDATE NmsSubscription SET iRecipientId = 13251076 WHERE iRecipientId = 13250626 AND NOT EXISTS (SELECT * FROM NmsSubscription WHERE iRecipientId = 13251076)有区别吗
标签: sql postgresql