我想在更新后创建触发器以在特定条件下删除行
我在这里确实找到了类似的问题,但是代码对我不起作用。
这是我尝试做的事情:
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 ;