gpt4 book ai didi

MySQL 触发器 : Delete From Table AFTER DELETE

转载 作者:IT老高 更新时间:2023-10-28 23:51:54 28 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 +
+----+-----+----------+

管理员可以管理顾客。当他们选择删除赞助人时,该赞助人将从 表 1 赞助人 中删除。此时,表 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: Check syntax near END on line 6。我不知道此时的错误是什么。我尝试了几种不同的变体。另外,我需要在这里使用定界符吗?

谁能帮助我恢复理智?

最佳答案

我认为触发代码有错误。由于您要删除具有已删除顾客 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

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

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

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