1
我有一列要修改爲主鍵和自動遞增。它有一些很好的值(都是唯一的)並且有一些NULL值。我不能自動增加它,因爲它不是主鍵,我不能將它作爲主鍵,因爲它沒有被自動遞增以給NULL一些值。我可以同時創建主鍵和自動增量嗎?
我該如何解決這個問題?
例子:
1 |data...
2 |data...
3 |data...
NULL|data...
NULL|data...
我有一列要修改爲主鍵和自動遞增。它有一些很好的值(都是唯一的)並且有一些NULL值。我不能自動增加它,因爲它不是主鍵,我不能將它作爲主鍵,因爲它沒有被自動遞增以給NULL一些值。我可以同時創建主鍵和自動增量嗎?
我該如何解決這個問題?
例子:
1 |data...
2 |data...
3 |data...
NULL|data...
NULL|data...
首先,你需要將這些NULL
值設置爲唯一行標識,那麼你就可以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
S和它們設置爲值。然後你可以使關鍵:
ALTER TABLE mytable
MODIFY rowID INT NOT NULL PRIMARY KEY AUTO_INCREMENT;
謝謝,這是偉大的。對於面臨這個問題的任何人,我只是使用'從表中選擇max(id)到@lastID;'來動態設置初始值。 –
很高興能幫到你!我知道有一種方法可以從查詢中設置變量,我只是不知道該怎麼做。 :-) –
我覺得這是一個很常見的問題,但很驚訝它沒有在mysql文檔的註釋中提到。 –