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;
|上边的触发器,创建的时候好像判断语句的格式有问题,总报错,去掉条件判断就没问题了,所以估计是不熟悉语法,改后希望能运行成功贴出来,谢谢!

解决方案 »

  1.   

    IF login_user='sysdata@localhost' THEN LEAVE;
      END IF;
      

  2.   

    login_user 是字符型 所以要在 sysdata@localhost 加上单引号~
      

  3.   

    还是不行,报错如下:
    /* 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" */
      

  4.   


    试试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;
      

  5.   

    解决就好 。。应该是 leave不能在 if子句里面使用到原因。。
    leave 一般用在无退出条件的循环里面 ~
      

  6.   

    mysql> DELIMITER |
    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>