比方說,我們有一個(InnoDB的)表associations
其中具有以下結構的MySQL數據庫:瞭解MySQLs行爲增加一個增量主鍵時事後
CREATE TABLE `associations` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`fk_id_1` int(11) NOT NULL,
`fk_id_2` int(11) NOT NULL,
`fk_id_3` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `some_unique_constraint` (`fk_id_1`,`fk_id_2`),
KEY `fk_id_2_INDEX` (`fk_id_2`),
KEY `fk_id_3_INDEX` (`fk_id_3`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin$$
有列id
跳躍 (我知道這是在多線程嘗試獲取自動增量值時如何生成的問題)。由於沒有其他表使用列id
作爲參考,我打算刪除列id
並再次創建它,希望計數孔將消失。我備份了我的數據庫並進行了測試。結果有點令人困惑。行的順序似乎已經改變。如果我沒有弄錯,那麼訂單首先由fk_id_1
然後fk_id_2
然後fk_id_3
。
這是自然秩序中,MySQL會將這些表格,assignung一個新生成的自動增量鍵值對行的時候?
是否有更多我應該知道,在此過程中發生了什麼?
原因是,爲什麼我需要知道這一點,我需要使id
列有用於我打算完成的另一項任務,即在差距不大的情況下。
我需要使這一列有用於我打算完成的另一項任務,即在差距不大的情況下。不過謝謝你的回答! – Aufwind
@Aufwind:已更新。你應該在問題 – gbn
問題中更新。感謝編輯! – Aufwind