gpt4 book ai didi

MySQL:插入数据库时​​出现完整性错误

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

因此,我的表中有这一列,当插入新条目时,该列将由触发器填充。

CREATE TABLE `users` (
`idusers` int(11) NOT NULL AUTO_INCREMENT,
`uid` char(64) DEFAULT NULL,
`uname` varchar(80) NOT NULL,
`password` char(128) NOT NULL,
`mail` varchar(120) NOT NULL,
PRIMARY KEY (`idusers`),
UNIQUE KEY `uname_UNIQUE` (`uname`),
UNIQUE KEY `mail_UNIQUE` (`mail`),
UNIQUE KEY `uid_UNIQUE` (`uid`)
);
DELIMITER $$
TRIGGER `flask`.`users_BEFORE_INSERT` BEFORE INSERT ON `users` FOR EACH ROW
BEGIN
set new.uid = sha2(new.idusers, 256);
END$$
DELIMITER ;

现在的问题是,当我尝试添加新行时(由于错误,只有一个测试行),在触发器中 new.idusers 的值总是 0 而不是当前的 auto_increment 值。
我需要在触发代码中进行哪些更改,以便用于生成 uid 的值是实际 id 而不是始终 0

最佳答案

由于 idusers 是一个 AUTO_INCRMENT 字段,因此只有在将记录插入表后才知道其值。
使用 AFTER INSERT 触发器而不是 BEFORE INSERT 触发器,并更新新插入的记录:

DELIMITER $$
CREATE TRIGGER `flask`.`users_AFTER_INSERT` AFTER INSERT ON `users` FOR EACH ROW
BEGIN
UPDATE users SET uid = sha2(NEW.idusers, 256) WHERE idusers = NEW.idusers;
END $$
DELIMITER ;

关于MySQL:插入数据库时​​出现完整性错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38508812/

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