我有一個有很多行(大約10k行)的現有表,其中有兩列作爲主鍵,因爲它充當兩個其他表之間的多對多關係的中間表。將MySQL @rowid賦值爲
對於新的需求,我需要指定添加新列(例如id
),它必須是具有自動增量值的主鍵。我跑以下查詢:
ALTER TABLE `momento_distribution` ADD `id` INT(11) NOT NULL FIRST;
ALTER TABLE `momento_distribution` DROP PRIMARY KEY , ADD PRIMARY KEY ( `id`);
首先查詢成功運行,但產生以下錯誤第二個查詢:
1062 - Duplicate entry '0' for key 'PRIMARY'
原因是顯而易見的,新列id
得到0爲默認值,主鍵不能有重複值。
現在我纔可以運行第二個查詢,我需要像1,2,3新列設置增量值...
在Oracle中,我知道,這是可以通過ROWID完成。 MySQL也有相應的@rowid。有人可以請建議一個查詢設置列值爲id
列的@rowid?
請注意:這必須通過查詢來完成,因爲我無法手動更改10000行。
謝謝@Joachim。 +1爲SQL Fiddle演示(我知道JS Fiddle但不是SQLFiddle)。這給了我信心。不幸的是我今天離開了辦公室。急切地等待在我桌子上測試。再次感謝。 –
對不起@Joachim,但它不會工作。我只是像** name VARCHAR(32)PRIMARY KEY **一樣將主鍵添加到表中,並且失敗。在我的情況下,我已經有了現有的主鍵。 –
使用替換現有主鍵的語句進行編輯。 SQLFiddle表只是一個示例表,用於顯示alter table如何工作,您想要的是上面的語句; 'ALTER TABLE momento_distribution DROP PRIMARY KEY, ADD id INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;' –