gpt4 book ai didi

MySQL触发器: Delete From Table AFTER DELETE

转载 作者:行者123 更新时间:2023-11-29 16:20:35 26 4
gpt4 key购买 nike

范围:两个表。创建新顾客时,他们会将一些有关他们的信息存储到第二个表中(这也是使用触发器完成的,它按预期工作)。这是我的表结构和关系的示例。

表 1-> 赞助人

+-----+---------+-----+
+ id + name + val +
+=====+=========+=====+
+ 37 + george + x +
+-----+---------+-----+
+ 38 + sally + y +
+-----+---------+-----+

表 2 -> patron_info

+----+-----+----------+
+ id + pid + name +
+----+-----+----------+
+ 1 + 37 + george +
+----+-----+----------+
+ 2 + 38 + sally +
+----+-----+----------+

管理员可以管理订阅成员(member)。当他们选择删除订阅成员(member)时,该订阅成员(member)将从表 1订阅成员(member)中删除。此时,表 2 patron_info 没有任何反应。

我只是想创建一个触发器,当表 1 删除了某个项目时,从表 2 中删除。这是我尝试过的...

最初,如果触发器存在,我会尝试将其放下(只是为了消除误会)...

DROP TRIGGER IF EXISTS log_patron_delete;

然后我尝试创建触发器...

CREATE TRIGGER log_patron_delete AFTER DELETE on patrons
FOR EACH ROW
BEGIN
DELETE FROM patron_info
WHERE patron_info.pid = patrons.id
END

此时,我收到语法错误 1046:检查第 6 行 END 附近的语法。我现在不知道错误是什么。我尝试了几种不同的变体。另外,我需要在这里使用分隔符吗?

谁能帮我恢复理智?

最佳答案

我认为触发代码中有错误。由于您想要删除具有已删除读者 ID 的所有行,因此必须使用 old.id (否则会删除其他 ID)

尝试将其作为新的触发器:

CREATE TRIGGER log_patron_delete AFTER DELETE on patrons
FOR EACH ROW
BEGIN
DELETE FROM patron_info
WHERE patron_info.pid = old.id;
END

不要忘记删除查询中的“;”。另外,如果您在控制台窗口中输入触发代码,也请使用分隔符。

关于MySQL触发器: Delete From Table AFTER DELETE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54533569/

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