Sql Server - 在delete语句中使用更新行的id作为参数

时间:2014-03-24 09:49:16

标签: sql sql-server triggers

我有一个这样的触发器:

CREATE TRIGGER Action_Voided on Action
    AFTER UPDATE AS
    BEGIN
        IF UPDATE (voided)
            BEGIN
                DELETE FROM User_Actions where action_id = ? -- here I need to get the Id of Action that was updated on voided column
            END
    END:

我需要抓住由此触发器更新的行的Id,并使用此Id作为delete语句的参数。 我正在进行一些研究,但无法确定如何使用插入/删除的表组合来实现这一目的。

谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

不确定这是否能解决您的问题,但是如果您想获得" id"正在更新的行的列,然后您可以在此处使用inserted魔术表。以下应该是您修改过的触发器。我没有测试过,所以请原谅我的语法错误(如果有的话)。如果有的话请告诉我,我会相应地修改我的答案。

CREATE TRIGGER Action_Voided on Action
AFTER UPDATE AS
BEGIN
    IF UPDATE (voided)
        BEGIN
            DELETE FROM User_Actions 
            where action_id IN (SELECT ID FROM INSERTED)
        END
END:

希望这有帮助。