我有主键列,它有一些外部外键引用。很平常。我忘了为它添加AUTO_INCREMENT。现在我执行
ALTER TABLE chat.users
CHANGE COLUMN user_id user_id INT(11) NOT NULL AUTO_INCREMENT ;
(PRIMARY KEY单独定义)
它讲述了关于fk的一些事情
ERROR 1833: Cannot change column 'user_id': used in a foreign key constraint 'fk_chats_users' of table 'chat.chats'
我无法弄清楚为什么fk会对它的引用感兴趣?引用AUTO_INCREMENT。
答案 0 :(得分:3)
FK对您的更改感到困扰的原因是您尝试更改它并在约束中使用,请记住您可以更改数据类型。
因此,如果您想对FK进行更改,请检查this answer(如果您在生产环境中进行更改,请记得锁定表格。)
答案 1 :(得分:-1)
(PRIMARY KEY单独定义)
如果您已经在列上定义了主键,那么我认为不需要修改列并向其添加auto_increment。主键默认自动递增。
但是,如果要在其上设置auto_increment功能,请尝试这样:
--Drop foreign key
ALTER TABLE chat.users DROP FOREIGN KEY fk_chats_users;
--Alter your primary key
ALTER TABLE person modify user_id INT(11) not null auto_increment;
--Recreate foreign key
ALTER TABLE chat.users ADD CONSTRAINT fk_chats_users FOREIGN KEY (user_id) REFERENCES chat.users(user_id) ON DELETE CASCADE;