可以同时创建主键和自增吗?
Can I create a primary key and auto increment at the same time?
我有一列要修改为主键和自增。它有一些好的值(都是唯一的)和一些 NULL 值。我不能自动递增它,因为它不是主键,我不能让它成为主键,因为它没有自动递增给 NULL 一些值。
我该如何解决?
示例:
1 |data...
2 |data...
3 |data...
NULL|data...
NULL|data...
首先您需要将这些 NULL
值设置为唯一的行 ID,然后您可以将行更改为 PRIMARY KEY
和 AUTO_INCREMENT
。
尝试这样的事情:
SET @lastID = 3; -- The highest value in your table, MAX(rowID)
UPDATE mytable
SET rowID = (@lastID := @lastID+1)
WHERE rowID IS NULL;
那应该 "fix" NULL
并将它们设置为值。然后就可以制作钥匙了:
ALTER TABLE mytable
MODIFY rowID INT NOT NULL PRIMARY KEY AUTO_INCREMENT;
我有一列要修改为主键和自增。它有一些好的值(都是唯一的)和一些 NULL 值。我不能自动递增它,因为它不是主键,我不能让它成为主键,因为它没有自动递增给 NULL 一些值。
我该如何解决?
示例:
1 |data...
2 |data...
3 |data...
NULL|data...
NULL|data...
首先您需要将这些 NULL
值设置为唯一的行 ID,然后您可以将行更改为 PRIMARY KEY
和 AUTO_INCREMENT
。
尝试这样的事情:
SET @lastID = 3; -- The highest value in your table, MAX(rowID)
UPDATE mytable
SET rowID = (@lastID := @lastID+1)
WHERE rowID IS NULL;
那应该 "fix" NULL
并将它们设置为值。然后就可以制作钥匙了:
ALTER TABLE mytable
MODIFY rowID INT NOT NULL PRIMARY KEY AUTO_INCREMENT;