我有一个名为Person的表,其中包含一个isStaff列(位),允许空值。
这个字段的目的是必须包含0/1的值;然而,由于应用程序在第一时间没有处理用户输入,所以在这个列中存在多个空值记录。
如果我尝试执行此查询:
UPDATE Person
SET isStaff = 0
WHERE isStaff IS NULL
我遇到了以下错误:
子查询返回了多个值。当子查询跟随=、!=、<、<=、>、>=时,或者当子查询用作表达式时,不允许这样做。
有什么解决方法吗?
我有一个名为Person的表,其中包含一个isStaff列(位),允许空值。
这个字段的目的是必须包含0/1的值;然而,由于应用程序在第一时间没有处理用户输入,所以在这个列中存在多个空值记录。
如果我尝试执行此查询:
UPDATE Person
SET isStaff = 0
WHERE isStaff IS NULL
如果您发布的确切问题就是这样,那么我倾向于相信您在Person
表上有一个触发器,而您甚至没有意识到。
我也倾向于相信它正在执行以下操作:
UPDATE SomeOtherTable
SET SomeColumn = 1
WHERE SomeOtherTable.ID = inserted.ID
使用触发器时,inserted
表包含所有被更新的记录,而不仅仅是单个记录,您可能需要像这样的内容:
UPDATE SomeOtherTable
SET SomeColumn = 1
WHERE ID IN (SELECT ID FROM inserted)
Person
表上有哪些触发器? - Ghost