MySQL中id跳是指當MySQL表中的記錄被刪除后,id字段會留下空缺,而新增的記錄會順次填補空缺的id值。例如,如果表中有1、2、3、4這四個id值的記錄,當id為2的記錄被刪除后,id值為3和4的記錄會依次往前,id值為4的記錄會填補空缺的2,表中的id值就變成了1、3、4。
CREATE TABLE `test` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `age` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
在MySQL中,我們可以通過MySQL的異常處理機制來防止id跳。如果我們要插入id值為100的記錄,但是表中最大的id值是10,那么我們可以通過以下的方式進行處理:
START TRANSACTION; SELECT @max_id := MAX(`id`) FROM `test`; INSERT INTO `test` (`id`, `name`, `age`) VALUES (@max_id + 1, '張三', 20); COMMIT;
通過以上的代碼,我們可以保證插入記錄的id值是當前表中最大的id值+1,這樣一來就可以避免數據表中出現id跳的情況了。