可以同时创建主键和自增吗?

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 KEYAUTO_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;