我想在更新后创建触发器以删除特定条件下的行 我确实在这里找到了类似的问题,但代码不适用于我。
这就是我尝试做的事情:
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')仅指定更改为'拒绝'州
答案 0 :(得分:0)
我认为,您使用的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 ;