gpt4 book ai didi

MySQL 触发器采用文本变量

转载 作者:行者123 更新时间:2023-11-29 10:08:59 25 4
gpt4 key购买 nike

假设我们有两张 table 。

第一个表是items - id, title
第二个表是历史记录 - id、标题、操作、用户

我们可以为“此用户插入了此项目”设置以下 AFTER INSERT 触发器:

INSERT INTO history (title, action, user) VALUES (NEW.title, 'INSERT', @phpUserId);
<小时/>

如果我想插入新项目,我可以这样做。

SET @phpUserId = 123;
INSERT INTO items (title) VALUES ('My best item');

在这种情况下,触发器工作得很好。

但问题是,当我向变量中添加一些文本时 - 例如 SET @phpUserId = "library123"; - 此时触发器无法获取该变量。

知道为什么只传递整数变量吗?

最佳答案

好消息,您的触发器没有任何问题,这就是证据

drop table if exists i,h;
create table i(id int, title varchar(20));
create table h(id int, title varchar(20), action varchar(20), user varchar(30));

drop trigger if exists t;
delimiter $$
create trigger t after insert on i
for each row
begin
INSERT INTO h (title, action, user) VALUES (NEW.title, 'INSERT', @phpUserId);
end $$

delimiter ;

SET @phpUserId = 123;
INSERT INTO i (title) VALUES ('My best item');
SET @phpUserId = 'bob123';
INSERT INTO i (title) VALUES ('My worst item');

+------+---------------+--------+--------+
| id | title | action | user |
+------+---------------+--------+--------+
| NULL | My best item | INSERT | 123 |
| NULL | My worst item | INSERT | bob123 |
+------+---------------+--------+--------+
2 rows in set (0.00 sec)

关于MySQL 触发器采用文本变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51363567/

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