更新它为NULL的列

时间:2012-09-06 19:57:34

标签: sql sql-server sql-server-2005

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

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

如果我尝试执行此查询:

UPDATE Person
SET isStaff = 0
WHERE isStaff IS NULL

我收到错误:

  

子查询返回的值超过1。子查询时不允许这样做   follow =,!=,<,< =,>,> =或者当子查询用作表达式时。

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

1 个答案:

答案 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)

当然,这是所有推测,直到你可以确认表上是否有触发器,如果​​有,触发器甚至在做什么。