来自 phpMyAdmin 的 MySQL 触发器查询

发布于 2024-12-04 15:25:41 字数 357 浏览 1 评论 0原文

我从我的 PhpMyadmin sql 选项卡运行以下查询

CREATE TRIGGER testTrigger 
AFTER INSERT ON tbl_table1 
FOR EACH ROW 
BEGIN 
INSERT INTO tbl_table2 (id,name) values (NEW.id,NEW.name); 
END

但每次我收到此错误消息:

#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在第 5 行“”附近使用的正确语法

我使用 MySQL 客户端版本:5.1.37,PHPMyadmim 版本信息:3.2.2.1deb1

Im running the following query from my PhpMyadmin sql tab

CREATE TRIGGER testTrigger 
AFTER INSERT ON tbl_table1 
FOR EACH ROW 
BEGIN 
INSERT INTO tbl_table2 (id,name) values (NEW.id,NEW.name); 
END

But everytime I'm getting this error msg:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 5

Im using MySQL client version: 5.1.37,PHPMyadmim Version information: 3.2.2.1deb1

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

雨后咖啡店 2024-12-11 15:25:41

请看此处

当您想在触发器中使用SET NEW.col_name = value时,请
请注意,您不能将其与 AFTER 操作一起使用,并且必须使用
操作之前。

所以也许你应该尝试:

CREATE TRIGGER testTrigger 
BEFORE INSERT ON tbl_table1 
FOR EACH ROW 
BEGIN 
    INSERT INTO tbl_table2 (id,name) values (NEW.id,NEW.name); 
END

编辑:我尝试了这个,它在MySQL中工作

DROP TRIGGER IF EXISTS testTrigger;
CREATE TRIGGER testTrigger 
BEFORE INSERT ON tbl_table1 
FOR EACH ROW 
BEGIN 
  INSERT INTO tbl_table2 VALUES (NEW.id,NEW.name);
END;

然后尝试INSERT INTO test1 SELECT 5,'pois';并且触发器工作了!

Look here:

When you want to use SET NEW.col_name = value in your trigger, please
note that you CANNOT use this with the AFTER the action, and must use
it BEFORE the action.

So probably you should try:

CREATE TRIGGER testTrigger 
BEFORE INSERT ON tbl_table1 
FOR EACH ROW 
BEGIN 
    INSERT INTO tbl_table2 (id,name) values (NEW.id,NEW.name); 
END

EDITED: I tried this and it's working in MySQL

DROP TRIGGER IF EXISTS testTrigger;
CREATE TRIGGER testTrigger 
BEFORE INSERT ON tbl_table1 
FOR EACH ROW 
BEGIN 
  INSERT INTO tbl_table2 VALUES (NEW.id,NEW.name);
END;

Then tried INSERT INTO test1 SELECT 5,'pois'; and trigger worked!!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文