gpt4 book ai didi

mysql - 更新后触发以根据条件删除行

转载 作者:行者123 更新时间:2023-11-30 22:25:42 25 4
gpt4 key购买 nike

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

这是我尝试做的:

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 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'Update(RequestState) Begin DELETE FROM friendship WHERE Reque' at line 9`

所以我的友谊表包含三列 userID、friendID 和 RequestState。该表代表友谊关系和友谊请求状态。如果 RequestState=accept 那么他们是 friend ,如果 RequestState=reject 该行应该被删除。

编辑:if update(requeststate) 如果列 = requeststate 已更新(从“等待”状态更改为“接受”或“拒绝”状态),则删除语句中的其他条件(WHERE RequestState = 'reject')指定仅更改为'拒绝'状态

最佳答案

我认为,您正在使用 Update(RequestState) 条件,例如 PostgreSQL,在 MySQLMariaDB 中可以像那样:

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 ;

关于mysql - 更新后触发以根据条件删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35309476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com