2014-12-02 67 views
0

我做了一个触发这样的:这是什么错误使触发器?

create trigger mytrigger 
before 
insert on 
person4 
for each row 
begin 
if new.salary < 5000 then 
    set new.salary = 6000; 
end if; 
end; 

这里的工资表person4的属性,我正在为这个触发。但是,它显示错误:#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 8

为什么会出现这种情况?语法是完全正确的。那为什么会发生?

+0

看起来像你缺少的分隔符。在开始的时候'分隔符//'最后'结束; //' – 2014-12-02 18:16:16

+0

这样做:'分隔符// 之前 插入上 person4 每一行 创建触发器mytrigger 开始 如果new.salary <5000然后 设置new.salary = 6000; end if; end; //'但仍显示错误。 – Rob 2014-12-02 18:20:43

+0

您还应该在末尾恢复分隔符:分隔符; – 2014-12-02 18:31:16

回答

1

触发器看起来不错,唯一缺少的是分隔符。

我刚刚创建与样品表TRIGER这里是

delimiter // 
create trigger mytrigger before insert on person4 
for each row 
begin 
if new.salary < 5000 then 
    set new.salary = 6000; 
end if; 
end;// 

delimiter; 

这里是MySQL测试

mysql> create table person4(id int, name varchar(20),salary int); 
Query OK, 0 rows affected (0.16 sec) 

mysql> insert into person4 values (1,'aa',6000); 
Query OK, 1 row affected (0.06 sec) 
mysql> select * from person4; 
+------+------+--------+ 
| id | name | salary | 
+------+------+--------+ 
| 1 | aa | 6000 | 
+------+------+--------+ 
1 row in set (0.01 sec) 

mysql> insert into person4 values (1,'bb','3000'); 
Query OK, 1 row affected (0.04 sec) 

mysql> select * from person4; 
+------+------+--------+ 
| id | name | salary | 
+------+------+--------+ 
| 1 | aa | 6000 | 
| 1 | bb | 6000 | 
+------+------+--------+ 
2 rows in set (0.00 sec) 
+0

我刚刚执行了您所写的查询,并显示以下错误:'#1064 - 您的SQL语法中有错误;检查对应于你的MySQL服务器版本的手册,在第1行'附近'使用正确的语法。 – Rob 2014-12-02 18:42:31

+0

你在mysql终端上执行吗? – 2014-12-02 18:43:46

+0

我正在使用phpmyadmin在xampp上执行。 – Rob 2014-12-02 18:45:45