更新它为NULL的列

use*_*059 3 sql sql-server sql-server-2005

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

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

如果我尝试执行此查询:

UPDATE Person
SET isStaff = 0
WHERE isStaff IS NULL
Run Code Online (Sandbox Code Playgroud)

我收到错误:

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

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

Lit*_*les 5

如果这是你的查询与发布完全一致,那么我倾向于相信你在Person桌面上有一个你甚至都不知道的触发器.

我也倾向于相信它正在做的事情:

UPDATE SomeOtherTable
SET SomeColumn = 1
WHERE SomeOtherTable.ID = inserted.ID
Run Code Online (Sandbox Code Playgroud)

使用触发器,该inserted表包含所有已更新的记录,而不仅仅是单个记录,您可能需要以下内容:

UPDATE SomeOtherTable
SET SomeColumn = 1
WHERE ID IN (SELECT ID FROM inserted)
Run Code Online (Sandbox Code Playgroud)

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