3

我有一个包含列 isStaff(位)的 Person 表,它允许 NULL 值。

目的是该字段必须包含值 0/1;但是,由于首先缺乏对用户输入的应用程序处理,因此该列中有多个值为 NULL 的记录。

如果我尝试执行此查询:

UPDATE Person
SET isStaff = 0
WHERE isStaff IS NULL

我得到错误:

子查询返回超过 1 个值。当子查询跟随 =、!=、<、<=、>、>= 或子查询用作表达式时,这是不允许的。

知道如何解决这个问题吗?

4

1 回答 1

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)

当然,这一切都是推测性的,直到您可以确认桌子上是否有触发器,如果​​有,触发器正在做什么。

于 2012-09-06T20:19:29.897 回答