我尝试创建一个在验证布尔字段后插入表中的触发器。这是我的代码:
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行)附近使用正确的语法
导致此错误的错误是什么?
答案 0 :(得分:1)
我会做一些调整,只是个人偏好。代码发布在下面。但主要问题是:
需要格式错误的IF语句 -
如果[表达]那么[如果为真]如果[如果错误]。
在Insert语句之后和结束之后缺少终结符 IF声明。
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 ;
希望这有帮助