您好,我的 mysql 触发器有问题:
DELIMITER $$
CREATE TRIGGER update_forum_admin
after UPDATE ON sb_admins
FOR EACH ROW BEGIN
INSERT INTO `mysql_db`.`trigger_log` (`dato`, `trigger`, `status`) VALUES (NOW(), 'update_forum_admin', OLD.user+"="+NEW.user);
END$$
DELIMITER ;
问题是关于:
OLD.user+"="+NEW.user
结果只是 0,但我想让它显示旧用户名加上“=”加上新用户名。
但是我需要什么声明呢?
最佳答案
您正在使用 +
作为字符串连接运算符,但这是 Microsoft 使用的非标准语法,不是 MySQL 也不是 ANSI SQL 标准。
MySQL 使用函数 CONCAT() .例如:
INSERT INTO `mysql_db`.`trigger_log` (`dato`, `trigger`, `status`)
VALUES (NOW(), 'update_forum_admin', CONCAT(OLD.user, '=', NEW.user));
ANSI SQL(和大多数其他 SQL 数据库)使用双管道作为字符串连接运算符:
INSERT INTO `mysql_db`.`trigger_log` (`dato`, `trigger`, `status`)
VALUES (NOW(), 'update_forum_admin', OLD.user || '=' || NEW.user);
但是不要在 MySQL 中尝试这个,除非你设置 SQL mode为 ANSI
或 PIPES_AS_CONCAT
。默认情况下,MySQL 中的 ||
是逻辑 OR
的同义词。
关于mysql触发器,OLD和NEW之间的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21337424/