1. 程式人生 > >MySQL聯合主鍵自增分別產生遞增id

MySQL聯合主鍵自增分別產生遞增id

比如員工表,要在部門內遞增生成編號 ,例如 

 

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)要放在最後