gpt4 book ai didi

mysql - 为已分配外键的属性添加自动增量(AUTO_INCRMENT)?

转载 作者:行者123 更新时间:2023-11-29 12:01:58 26 4
gpt4 key购买 nike

user 表在 user_id 上定义时未使用 AUTO_INCRMENT。我想将其更改为 AUTO_INCRMENT 字段。但问题是 user_id 被外键约束中的许多表引用。

我们可以在不删除所有外键的情况下解决这个问题吗?

最佳答案

您可以在不删除的情况下执行此操作,使用 foreign_key_checks :

set foreign_key_checks = 0;
--before alter, set AUTO_INCREMENT to a max existing value + 1 (see below)
alter table users modify column user_id INT NOT NULL AUTO_INCREMENT;
set foreign_key_checks = 1;

DEMO HERE

您也可以通过删除来完成此操作,如下例。

假设users_ref是一个引用表。

ALTER TABLE users_ref DROP FOREIGN KEY fk_users;

AUTO_INCRMENT开始设置为最大现有值+1,即:

select max(user_id) + 1 from users; --let's say it returns 5
ALTER TABLE users AUTO_INCREMENT=5;

添加AUTO_INCRMENT:

alter table users modify column user_id INT NOT NULL AUTO_INCREMENT;

重新创建约束:

ALTER TABLE users_ref add CONSTRAINT fk_users FOREIGN KEY (user_id) REFERENCES users(user_id);

演示可以找到 HERE .

关于mysql - 为已分配外键的属性添加自动增量(AUTO_INCRMENT)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32220233/

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