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

这是我尝试做的事情:

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服务器版本相对应的手册以获取在'Update(RequestState)附近使用的正确语法
        开始
             在第9行的友谊中删除“请求”


所以我有友谊表,其中有三列userID,friendID和RequestState。该表表示友谊关系和友谊请求状态。如果RequestState = accept,那么他们是朋友,如果RequestState =拒绝,则应删除该行。

编辑:
如果update(requeststate)用于如果列= requeststate已更新(从“ waiting”状态更改为“ accept”或“ reject”状态),则delete语句中的其他条件(WHERE RequestState =“ reject”)仅指定更改为“拒绝”状态

最佳答案

我认为,您正在Update(RequestState)PostgreSQL中使用MySQL条件,例如MariaDB可能是这样的:

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 ;

10-08 04:59