SQL错误[512] [21000]:子查询返回的值超过1

rek*_*nyz 1 sql sql-server

为什么不起作用?(SQL Server)

UPDATE
    someTable
SET
    name='AB'
WHERE 
    id IN (
        SELECT t.id 
        FROM someTable t 
        WHERE t.name='ABC'
        )
Run Code Online (Sandbox Code Playgroud)

这个也行不通

UPDATE
    someTable
SET
    name='AB'
WHERE 
    name='ABC'
Run Code Online (Sandbox Code Playgroud)

Mar*_*ith 7

因为您必须UPDATE在桌面上有一个断开的触发器.

触发器中的常见错误没有考虑到语句可能会影响多行或零行,因此INSERTED/ DELETEDtables并不总是只包含一行.

查看类似构造的触发器

SET @ID = (select ID FROM INSERTED)
Run Code Online (Sandbox Code Playgroud)