您好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,但我想让它显示旧用户名加“=”加上新用户名。
但我需要什么声明呢?
答案 0 :(得分:1)
您使用+
作为字符串连接运算符,但这是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);
但是,除非您将SQL mode设置为ANSI
或PIPES_AS_CONCAT
,否则请勿在MySQL中尝试此操作。默认情况下,MySQL中的||
是逻辑OR
的同义词。
答案 1 :(得分:0)
您希望concatenate将这些值转换为字符串:
CONCAT(OLD.user, "=", NEW.user)