2010-02-08 83 views
1

我試圖在兩個表之間同步: 我有活動表,其中有auto_increment,並且我的歸檔表具有相同的值。 我希望兩個ID都是唯一的(在表格之間) - 我的意思是,我想保存自動增量網,如果我的UNION這兩個表我仍然有uniqness。我怎樣才能做到這一點? 當mysql關閉時,是否有可能保存自動增量?在MySQL中保存自動增量

回答

0

首先,這聽起來像個糟糕的主意 - 你的檔案表中不應該有auto_increment,因爲所有的數據都是直接從實時表(包括它的ID)複製的。

然而,這裏有一些哈克解決方案:

  1. 可以使用更改表的電流AUTO_INCREMENT

    ALTER TABLE tbl_name AUTO_INCREMENT = some_new_value 
    

    它設置爲一個較大的表中的一個偏移量,你會安全一段時間。除了抵消抵消之後,忘記了這個小小的黑客之後,整個房子的卡片就會落在你的頭上。

  2. 在其中一個表格中選擇(例如SELECT id + 1000000 AS id)時,您可以簡單地按常數添加偏移量。仍然是黑客,但至少它離表面更近,並且當你最終到達重疊區域時,修復起來更容易。

  3. 最後,您可以從一個表格中選擇最大ID,然後在同一選擇過程中用此值偏移另一個表格中的所有ID。確保你有一個足夠大的數據類型的ID雖然。

+0

嘿,謝謝!我沒有檔案auto_incremenet ...只有在活動。所以你建議從歸檔表中選擇MAX id並修改主動的auto_increment從那一點開始? – Himberjack 2010-02-08 08:22:10

+0

如果檔案中沒有'AUTO_INCREMENT',並且正在使用ID複製數據,爲什麼檔案首先存在衝突的ID?如果每次從頭開始生成活動表,則可以在CREATE語句中設置AUTO_INCREMENT。 – 2010-02-08 08:27:45

+0

可以說我有活動的ID爲1到10,我將它們按原樣移動到存檔中,下次Mysql將啓動,它將再次填充1到10,因此我將再次複製它們歸檔。 – Himberjack 2010-02-08 08:40:04