是什么导致"子查询返回超过1个值..."错误?

Jan*_*ngo 1 sql t-sql sql-server sql-server-2005

我不知道为什么我会收到这个错误: -

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.
Run Code Online (Sandbox Code Playgroud)

我试图运行此查询: -

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 = 'xxxxxxx@hotmail.ca' 
WHERE 
RefID = '05e6c6b4-63ff-45b2-a5e2-920d5dce3e45' 

ALTER TABLE Test1 WITH CHECK CHECK CONSTRAINT ALL
ALTER TABLE Test2 WITH CHECK CHECK CONSTRAINT ALL
Run Code Online (Sandbox Code Playgroud)

HLG*_*GEM 6

您正在更新的其中一个表是否有触发器?如果是,则可能包含具有多个值的子查询.

我个人认为在进行插入或更新时关闭检查约束是一种非常糟糕的做法.它们存在是有原因的,如果您的数据不满足这些约束,则不应按原样插入,或者需要针对新条件调整约束.如果将来更新记录,它也可能会产生问题.

  • 也有可能ELSE可以做一个插入,当你禁用它们时应该有触发器. (2认同)