我没有任何想法,为什么我收到此错误: -什么导致“子查询返回多个值...”错误?
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
The statement has been terminated.
我试图运行此查询: -
ALTER TABLE Test1 NOCHECK CONSTRAINT ALL
ALTER TABLE Test2 NOCHECK CONSTRAINT ALL
UPDATE Test1
SET ID= '05f6c6b4-63ff-45b2-a5e2-920d5dce3e45'
WHERE ID = '05e6c6b4-63ff-45b2-a5e2-920d5dce3e45';
UPDATE Test2
SET ID = '05f6c6b4-63ff-45b2-a5e2-920d5dce3e45' ,
SpecID = NULL ,
RefLastName = 'Dummy' ,
RefFirstName = 'First Name' ,
RefMiddleName = NULL ,
RefPhone1 = '111444444' ,
RefPhone2 = '2121222' ,
RefFax = '222222' ,
RefEmail = '[email protected]'
WHERE
RefID = '05e6c6b4-63ff-45b2-a5e2-920d5dce3e45'
ALTER TABLE Test1 WITH CHECK CHECK CONSTRAINT ALL
ALTER TABLE Test2 WITH CHECK CHECK CONSTRAINT ALL
感谢您的线索。错误是因为触发器。顺便说一句,我同意这是一个不好的做法。但我认为这就是我如何实现将旧数据库与新数据库同步的任务(更新了一个表格结构的巨大变化)。在新数据库中,所有GUID都是新的。 :( – Jango 2009-10-14 15:37:58
我强烈建议你考虑改变你的触发来处理多个更新或提高一个更有意义的错误,如果多行是在子选择。 – 2009-10-14 15:40:47
他一定是上FK约束双方修改的列。只有这样,才能做到如果没有禁用它们(即我能想到的,假设NOT NULL列)是使表A的新条目,更新表B到点到一个新的条目,然后删除A. – 2009-10-14 15:40:48