gpt4 book ai didi

mysql - 插入触发后自动递增Id值加1

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

我有如下 3 个表:

CREATE TABLE `user_dummy` (
`user_id` INT(11) NOT NULL AUTO_INCREMENT,
`user_name` VARCHAR(50) NOT NULL,
`user_email` VARCHAR(100) NOT NULL,
PRIMARY KEY (`user_id`)
)
ENGINE=InnoDB
;

CREATE TABLE `user_role` (
`user_role_id` INT(11) NOT NULL AUTO_INCREMENT,
`user_role_name` VARCHAR(255) NULL DEFAULT NULL,
PRIMARY KEY (`user_role_id`)
)
ENGINE=InnoDB
;

CREATE TABLE `user` (
`user_seq` INT(11) NOT NULL AUTO_INCREMENT,
`user_id` INT(11) NOT NULL,
`user_name` VARCHAR(50) NOT NULL,
`user_email` VARCHAR(100) NOT NULL,
`user_role_id` INT(11) NOT NULL,
PRIMARY KEY (`user_seq`),
INDEX `FKh2wc2dtfdo8maylne7mgubowq` (`user_role_id`),
CONSTRAINT `FKh2wc2dtfdo8maylne7mgubowq` FOREIGN KEY (`user_role_id`) REFERENCES `user_role` (`user_role_id`) ON UPDATE CASCADE ON DELETE CASCADE
)
ENGINE=InnoDB
;

我在用户表上创建了插入触发器。即,当我在 user_dummy 表中插入 1 条记录时,它会将包含 user_role 的所有映射的记录插入到 user 表中。

触发:

CREATE TRIGGER `user_dummy_after_insert` AFTER INSERT ON `user_dummy` FOR EACH ROW BEGIN

INSERT INTO user(user_id, user_name, user_email, user_role_id)
SELECT NEW.user_id, NEW.user_name, NEW.user_email, user_role_id
FROM user_role;

END

上述触发器能够将记录插入到用户表中,但每条 user_role 记录后 auto_increment 值都会增加 1。

enter image description here enter image description here enter image description here

如果您观察到 user_seq 3 丢失。并且插入4条记录后,触发器将auto_increment值设置为7。

enter image description here

如何解决这个问题?

最佳答案

另一种选择:更好的是,您可以使用 count 函数来计算现有记录总数,然后将其加一并根据 as 进行分配。如果您有兴趣保留插入顺序。

关于mysql - 插入触发后自动递增Id值加1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53482115/

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