在PhpMyAdmin中创建触发器会导致语法错误

时间:2016-04-23 20:51:45

标签: mysql database database-trigger

我尝试创建一个在验证布尔字段后插入表中的触发器。这是我的代码:

    DROP TRIGGER IF EXISTS user_au_trg;

DELIMITER $$
CREATE OR REPLACE TRIGGER user_au_trg
  AFTER UPDATE ON users
  FOR EACH ROW
  BEGIN
    IF NEW.UserNameVerified = '1'
     INSERT INTO changeLog(logId,userId,logDate, theLog) VALUES (null, new.UserId, NOW(), 'User Has Now Been Verified')
     END IF
  END $$
DELIMITER ;

每当我尝试运行此操作时,都会出现语法错误:

  

1064 - 您的SQL语法出错;检查与您的MariaDB服务器版本对应的手册,以便在' INSERT INTO changeLog(logId,userId,logDate,theLog)VALUES(null,new.UserId,NO'第6行)附近使用正确的语法

导致此错误的错误是什么?

1 个答案:

答案 0 :(得分:1)

我会做一些调整,只是个人偏好。代码发布在下面。但主要问题是:

  1. 需要格式错误的IF语句 -

    如果[表达]那么[如果为真]如果[如果错误]。

  2. 在Insert语句之后和结束之后缺少终结符 IF声明。

  3. DROP TRIGGER IF EXISTS user_au_trg;
        DELIMITER ;;
    
        CREATE OR REPLACE TRIGGER user_au_trg
          AFTER UPDATE ON users
          FOR EACH ROW
          BEGIN
            IF NEW.UserNameVerified = '1' THEN
             INSERT INTO changeLog(logId,userId,logDate, theLog) VALUES (null, new.UserId, NOW(), 'User Has Now Been Verified');
             END IF; 
          END ;;
        DELIMITER ;
    

    希望这有帮助