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

时间:2015-01-06 21:37:26

标签: mysql sql

我有一个要修改为主键和自动增量的列。它有一些好的值(都是唯一的)并且有一些NULL值。我不能自动递增它,因为它不是主键,我不能使它成为主键,因为它没有自动递增以给NULL一些值。

我该如何解决这个问题?

示例:

1   |data...
2   |data...
3   |data...
NULL|data...
NULL|data...

1 个答案:

答案 0 :(得分:2)

首先,您需要将这些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;

那应该"修复" NULL并将它们设置为值。然后你就可以做出关键:

ALTER TABLE mytable
    MODIFY rowID INT NOT NULL PRIMARY KEY AUTO_INCREMENT;