Ohg*_*why 19 mysql triggers mysql-error-1046
范围:两张桌子.当创建一个新的顾客时,他们将一些关于它们的信息存储到第二个表中(这也是使用触发器完成的,它按预期工作).这是我的表结构和关系的一个例子.
表1-> 顾客
+-----+---------+-----+
+ id + name + val +
+=====+=========+=====+
+ 37 + george + x +
+-----+---------+-----+
+ 38 + sally + y +
+-----+---------+-----+
Run Code Online (Sandbox Code Playgroud)
表2 - > patron_info
+----+-----+----------+
+ id + pid + name +
+----+-----+----------+
+ 1 + 37 + george +
+----+-----+----------+
+ 2 + 38 + sally +
+----+-----+----------+
Run Code Online (Sandbox Code Playgroud)
管理员可以管理顾客.当他们选择移除顾客时,顾客从桌子1中 移除patrons.此时,表2 没有任何反应patron_info.
当表1删除了一个项目时,我只是尝试创建一个从表2中删除的触发器.这是我试过的......
最初,我尝试放下触发器(如果它存在)(只是为了清除空气)......
DROP TRIGGER IF EXISTS log_patron_delete;
Run Code Online (Sandbox Code Playgroud)
然后我尝试创建触发器......
CREATE TRIGGER log_patron_delete AFTER DELETE on patrons
FOR EACH ROW
BEGIN
DELETE FROM patron_info
WHERE patron_info.pid = patrons.id
END
Run Code Online (Sandbox Code Playgroud)
此时,我收到语法错误1046: Check syntax near END on line 6.我不知道此时的错误是什么.我尝试了几种不同的变化.另外,我需要在这里使用分隔符吗?
任何人都可以帮助恢复我的理智吗?
viv*_*nam 42
我认为触发代码有错误.由于您要删除所有已删除的顾客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
Run Code Online (Sandbox Code Playgroud)
别忘了";" 在删除查询上.此外,如果您在控制台窗口中输入TRIGGER代码,也可以使用分隔符.
| 归档时间: |
|
| 查看次数: |
94795 次 |
| 最近记录: |