MySQL聯合主鍵自增分別產生遞增id
阿新 • • 發佈:2018-11-23
比如員工表,要在部門內遞增生成編號 ,例如
t_user表
dept user_no_name
--------------------------------------
財務部 財務部001
研發部 研發部001
財務部 財務部002
財務部 財務部003
研發部 研發部002
為了 生成user_no_name後面的序號,可以這麼做
例如對財務部的:
SELECT CAST(REPLACE(UPPER(user_no_name), '財務部', '') AS UNSIGNED) AS sn FROM t_user
然後對這個sn+1
但有個更高效的方法。
建一個user_no表:
id dept
----------------------------------------
1 財務部
1 研發部
2 研發部
3 研發部
2 財務部
user_no表是先把dept,id設為聯合主鍵,然後把id設為自增長,
那麼插入該表時,每插入一條財務部的資料,id就會自增長一次,每插入研發部資料,id也會分別增長一次,
也就是說,id的自增長是按dept分組的。
有了這個id之後,就可以與dept一起組裝出"財務部001"這樣的user_no_name。
注意,設聯合主鍵的順序很關鍵,自增長的欄位(id)要放在最後