2010-07-02 38 views
0

我有一個包含列IDCREATED_DATE,並,其中id是自動遞增的主鍵(從1開始)和CREATED_DATE是一個MySQL錶行的創建日期(只是一個例子)。MySQL的進口記錄和轉移的主鍵增量

自該應用程序發佈以來,該表中有50行。假設我有100箇舊記錄(考慮created_date值),我想將其導入到此表中。

有沒有簡單的方法將當前記錄的id值轉移到101-150,所以我可以導入id值爲1-100的舊記錄?這甚至是可取的嗎?

如果我不得不重新做一遍,我會調整id列(主鍵)的自動增量,然後啓動應用程序以適應我打算導入的記錄。

回答

2

你可以用UPDATE命令它們重新編號:

UPDATE table SET id = id + 100; 

或將其導入到一具有AUTO_INCREMENT值預先設定一個新表:

CREATE TABLE `table` (
    `id` int(10) unsigned NOT NULL auto_increment, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=101; 

您需要注意確保維護參照完整性 - 如果其他表引用此表,則需要確保它們也已更新。

1

這是可能的,但我不建議移動生產表上的主鍵。這會破壞您的數據關聯,從而破壞參照完整性。

0

1. update table1 set id = id+100。請確保您更改爲其他表這些記錄的所有引用(它會自動,如果你使用外鍵與on update cascade選項完成。該ID的
2.將100箇舊記錄
3.更新自動遞增