gpt4 book ai didi

mysql触发器,OLD和NEW之间的文本

转载 作者:行者123 更新时间:2023-11-29 03:02:20 25 4
gpt4 key购买 nike

您好,我的 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 modeANSIPIPES_AS_CONCAT。默认情况下,MySQL 中的 || 是逻辑 OR 的同义词。

附言:You should use single-quotes for string literals .

关于mysql触发器,OLD和NEW之间的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21337424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com