我有一个表包含列isStaff(bit)的Person,它允许NULL值。
目的是该字段必须包含值0/1;但是,由于首先缺乏对用户输入的应用程序处理,因此该列中有多个具有NULL值的记录。
如果我尝试执行此查询:
UPDATE Person
SET isStaff = 0
WHERE isStaff IS NULL
我收到错误:
子查询返回的值超过1。子查询时不允许这样做 follow =,!=,<,< =,>,> =或者当子查询用作表达式时。
知道如何解决这个问题吗?
答案 0 :(得分:5)
如果这是您的查询与发布完全相同,那么我倾向于相信您在Person
表上有一个您甚至不知道的触发器。
我也倾向于相信它正在采取以下措施:
UPDATE SomeOtherTable
SET SomeColumn = 1
WHERE SomeOtherTable.ID = inserted.ID
使用触发器,inserted
表包含更新的所有记录,而不仅仅是单个记录,您可能需要这样的内容:
UPDATE SomeOtherTable
SET SomeColumn = 1
WHERE ID IN (SELECT ID FROM inserted)
当然,这是所有推测,直到你可以确认表上是否有触发器,如果有,触发器甚至在做什么。