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.当子查询跟随=,!=,<,<=,>,> =或子查询用作表达式时,不允许这样做.
知道如何解决这个问题吗?
如果这是你的查询与发布完全一致,那么我倾向于相信你在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)
当然,这是所有推测,直到你可以确认表上是否有触发器,如果有,触发器甚至在做什么.