在 mysql 中创建触发器时出现错误“1064”?

Posted

技术标签:

【中文标题】在 mysql 中创建触发器时出现错误“1064”?【英文标题】:error "1064" in trigger creation in mysql? 【发布时间】:2011-06-27 14:15:40 【问题描述】:

mysql 中创建触发器时,我收到错误 1046。我的查询是:

CREATE TABLE test.Employee(
              id            int,
              first_name    VARCHAR(30),
              last_name     VARCHAR(15),
              start_date    DATE,
              end_date      DATE,
              city          VARCHAR(10),
              description   VARCHAR(15)
          );


CREATE TABLE test.Employee_log(
              id int,
              first_name varchar(50),
              last_name varchar(50),
              start_date date,
              end_date date,
              city varchar(50),
              description varchar(50),
              Lasinserted Time
          );

当我在下面执行时,它给出了错误:

Error Code : 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 'END$$ 
delimiter' at line 1
(16 ms taken)


delimiter $$
CREATE TRIGGER test.Employee_Trigger
     AFTER insert ON test.employee
     FOR EACH ROW
     BEGIN
     insert into test.employee_log values(new.id,new.first_name,
     new.last_name,new.start_date,new.end_date,
     new.city,new.description,curtime());
    END$$ 
delimiter ;

如果有人可以请帮助,将不胜感激。

谢谢 尤加尔

【问题讨论】:

【参考方案1】:

触发器既不是例程也不是存储过程, 所以不需要BEGIN...END,加上表名区分大小写

CREATE TRIGGER Employee_Trigger
AFTER insert ON Employee
FOR EACH ROW
INSERT INTO test.Employee_log values(new.id,new.first_name,
  new.last_name,new.start_date,new.end_date,
  new.city,new.description,curtime());

【讨论】:

我不知道它对你有什么作用,但它对我不起作用。:(

以上是关于在 mysql 中创建触发器时出现错误“1064”?的主要内容,如果未能解决你的问题,请参考以下文章

在 MySQL 5.6.27 中创建触发器时出现奇怪的错误 [重复]

更新触发器后创建空字符串时出现无法解释的 MySQL 错误 #1064?

创建触发器时出现错误 1064

MySQL - 在第 1 行附近创建触发器错误 1064

在 phpmyadmin 中创建触发器

MySQL错误代码:在MySQL Workbench中创建表期间出现1064 [关闭]