我有一列要修改为主键和自动递增。它有一些好的值(都是唯一的)和一些 NULL 值。我不能自动递增它,因为它不是主键,我也不能让它成为主键,因为它没有自动递增以给 NULL 一些值。
我该如何解决?
例子:
1 |data...
2 |data...
3 |data...
NULL|data...
NULL|data...
最佳答案
首先您需要将那些NULL
值设置为唯一的行ID,然后您可以使用AUTO_INCREMENT
将行更改为PRIMARY KEY
。
尝试这样的事情:
SET @lastID = 3; -- The highest value in your table, MAX(rowID)
UPDATE mytable
SET rowID = (@lastID := @lastID+1)
WHERE rowID IS NULL;
这应该“修复”NULL
并将它们设置为值。然后你可以制作 key :
ALTER TABLE mytable
MODIFY rowID INT NOT NULL PRIMARY KEY AUTO_INCREMENT;
关于mysql - 可以同时创建主键和自增吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27807590/