更新后触发以删除条件上的行

时间:2016-02-10 07:45:24

标签: mysql sql triggers

我想在更新后创建触发器以删除特定条件下的行 我确实在这里找到了类似的问题,但代码不适用于我。

这就是我尝试做的事情:

DELIMITER $$

CREATE TRIGGER delete_rejected_friendship
AFTER UPDATE
    ON friendship FOR EACH ROW
    BEGIN
        IF Update(RequestState)
        BEGIN
            DELETE FROM friendship WHERE RequestState = 'reject'
        END
   END
END$$
DELIMITER ;

这是出现的错误:

  

#1064 - 您的SQL语法出错;检查与您的MariaDB服务器版本对应的手册,以便在“更新(RequestState)”附近使用正确的语法         开始              DELETE FROM friendship WHERE Reque'在第9行

所以我的友谊表有三列userID,friendID和RequestState。此表代表友谊关系和友谊请求状态。如果RequestState = accept,则他们是朋友,如果RequestState = reject,则应该删除该行。

编辑: 如果更新(请求状态),如果列=请求状态更新(从“等待”状态更改为“接受”或“拒绝”状态),则删除语句中的另一个条件(WHERE RequestState ='reject')仅指定更改为'拒绝'州

1 个答案:

答案 0 :(得分:0)

我认为,您使用的Update(RequestState)条件如PostgreSQLMySQLMariaDB可能是这样:

DELIMITER $$

CREATE TRIGGER delete_rejected_friendship
AFTER UPDATE
    ON friendship FOR EACH ROW
    BEGIN
        IF NEW.RequestState <> OLD.RequestState THEN
            BEGIN
                DELETE FROM friendship WHERE RequestState = 'reject';
            END;
        END IF;
   END;
$$
DELIMITER ;