對於id自增的實現,數據庫提供其自增策略,首先我們需要明白爲什麼需要自增id,我覺得有以下幾個原因:
1、id的管理變得簡單,由數據庫進行維護
2、id具有唯一性,滿足主鍵的定義,通常作爲主鍵使用
明白了自增id的好處,那麼我們如何自定義id自增呢?
下面實現的方法中使用到了輔助表: id_help
表結構如下
table_name | max_id |
varchar(40) | int |
其中table_name存儲哪個表的id需要自增,max_id存儲當前最大的一個id值
爲了獲取自增id,我們需要寫一個存儲過程來獲取:
DECLARE col_id INT;
SELECT max_id INTO col_id FROM id_help WHERE table_name='tableName';
UPDATE id_help SET max_id = col_id + 1;
SELECT col_id + 1;
我們只需要將我們需要自增的表數據初始化寫入id_help表中,之後就可以通過存儲過程獲取所需要的值
注:這種方式可以實現多個表共用一個id,且這些id滿足自增要求,即都獲取同一個table_name的max_id,但這種方式有一個問題,後期的數據只能通過該方式進行id數據的插入,否則會導致max_id與表中最大的id不符,導致數據錯亂,所以爲了避免這種情況,數據的插入最好統一使用一種方式