DELIMITER |
CREATE TRIGGER INSERT_N_aaa after insert on aaa for each row
begin
DECLARE login_user CHAR(20);
SELECT USER() into login_user;
IF login_user=sysdata@localhost THEN LEAVE;
END IF;
insert into t_db_change values(NULL,'aaa','ID',new.ID,null,null,null,null,null,null,null,null,sysdate(),0,1,'n_aaa');
END;
|上边的触发器,创建的时候好像判断语句的格式有问题,总报错,去掉条件判断就没问题了,所以估计是不熟悉语法,改后希望能运行成功贴出来,谢谢!
CREATE TRIGGER INSERT_N_aaa after insert on aaa for each row
begin
DECLARE login_user CHAR(20);
SELECT USER() into login_user;
IF login_user=sysdata@localhost THEN LEAVE;
END IF;
insert into t_db_change values(NULL,'aaa','ID',new.ID,null,null,null,null,null,null,null,null,sysdate(),0,1,'n_aaa');
END;
|上边的触发器,创建的时候好像判断语句的格式有问题,总报错,去掉条件判断就没问题了,所以估计是不熟悉语法,改后希望能运行成功贴出来,谢谢!
END IF;
/* Error: "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 IF
insert into t_db_change values(NULL,'aaa','ID',new.ID,null,null,nul' at line 5" */
试试IF login_user='sysdata@localhost' THEN LEAVE;
END IF;你这里到 LEAVE的意思是说 如果变量login_user = 'sysdata@localhost' 就什么都不执行么?
那你改成这样:IF login_user<>'sysdata@localhost' THEN
insert into t_db_change values(NULL,'aaa','ID',new.ID,null,null,null,null,null,null,null,null,sysdate(),0,1,'n_aaa');
END IF;
leave 一般用在无退出条件的循环里面 ~
mysql>
mysql> create table aaa(id int) |
Query OK, 0 rows affected (0.08 sec)mysql>
mysql> CREATE TRIGGER INSERT_N_aaa after insert on aaa for each row
-> lable1:begin
-> DECLARE login_user CHAR(20);
-> SELECT USER() into login_user;
-> IF login_user='sysdata@localhost' THEN
-> LEAVE lable1;
-> END IF;
-> insert into t_db_change values(NULL,'aaa','ID',new.ID,null,null,null,null,null,null,null,null,sysdate(),0,1,'n_aaa');
-> END lable1;
-> |
Query OK, 0 rows affected (0.11 sec)mysql>