gpt4 book ai didi

插入后的 MYSQL 触发器 => 插入第二个表 => 插入触发器之前不起作用

转载 作者:行者123 更新时间:2023-11-30 22:07:06 24 4
gpt4 key购买 nike

我得到了这个数据库结构:

CREATE TABLE `user` (
`usr_id` bigint(20) NOT NULL AUTO_INCREMENT,
`usr_mail` varchar(64) NOT NULL,
`usr_creationdate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`usr_id`)
);

CREATE TABLE `user_activation` (
`usract_id` bigint(20) NOT NULL AUTO_INCREMENT,
`usr_id` bigint(20) NOT NULL,
`usract_key` text NOT NULL,
`usract_used` int(11) NOT NULL DEFAULT '0',
`usract_creationdate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`usract_usagedate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`usract_expiredate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
);


CREATE TRIGGER `USER_INSERT_ADD_ACTIVATION` AFTER INSERT ON `user`
FOR EACH ROW
INSERT INTO user_activation (usr_id, usract_key)
VALUES (NEW.usr_id, UUID());


CREATE TRIGGER `USRACT_INSER_SET_EXPIREDATA` BEFORE INSERT ON `user_activation`
FOR EACH ROW
SET NEW.usract_expiredate = DATE_ADD(NOW(), INTERVAL 1 DAY);

当我将数据插入表 user_activation 时,我的 user_activation.usract_expiredate 会更新到第二天。如果我将数据插入到表 user 中,一行将插入到 user_activation 中,但 user_activation.usract_expiredate 不会设置为第二天。似乎没有执行第二个触发器。

我是不是对触发器做错了什么?

最佳答案

好吧,您只需要一个触发器即可实现这一目标。

DROP TRIGGER `USRACT_INSER_SET_EXPIREDATA`;
DROP TRIGGER `USER_INSERT_ADD_ACTIVATION`;

CREATE TRIGGER `USER_INSERT_ADD_ACTIVATION` AFTER INSERT ON `user`
FOR EACH ROW
INSERT INTO user_activation (usr_id, usract_key,usract_expiredate)
VALUES (NEW.usr_id, UUID(),DATE_ADD(NOW(), INTERVAL 1 DAY));

关于插入后的 MYSQL 触发器 => 插入第二个表 => 插入触发器之前不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41307274/

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