使用插入表进行MSSQL触发器更新



我正在尝试编写一个触发器,仅在更新的列等于特定值时才运行。

基本上,只有当我将列名"Status"更新为值"Paid"时,我才希望触发器运行。

ie

if (Update(Status) AND  inserted.Status = 'Paid')
begin
end

目前我得到这个错误插入了"多部分标识符"。状态"无法被约束"。

提前感谢!

您需要将其分成两步。1. 只有在状态更新时才会做出反应。对插入的状态为Paid

的所有元素做你想做的
if update(status)
begin
    -- Do the stuff to the Paid elements in inserted
    select * from inserted as i where i.status = 'Paid'
end

记住,你的状态也可以从付费更新到付费,你可能不想对此做出反应。所以你可以这样做:

select * from
inserted as i
inner join deleted as d on i.id = d.id
where i.status <> d.status and i.status = 'Paid'

现在结果只包含已更新为Paid的行和它不等于Paid的行

最新更新