我有證書的數據庫(MySQL的),每一個用代碼標識,格式如下:自動遞增列其重置每年
year
- number
,其中今年是最後兩位數字獲得證書的年份,Number是一個五位數的遞增數字(例如,14-12345
)。每年,號碼部分必須重置。所以2015年的第一個證書將是15-00001。 我的問題是與代碼的「數字」部分。在我的應用
SELECT MAX(Number) FROM certificates WHERE Year = YEAR(NOW())
然後,在另一份聲明中,像這樣的(僞代碼,以簡化):現在我在做這個
INSERT INTO certificates (Year, Number) VALUES (YEAR(NOW()), ++Number)
一個循環內,插入多個新證書。
這是有效的,但在併發插入方面不太安全。也許我可以使用交易,但我認爲還有更好的辦法。
我想在另一個表中的自動遞增值和主表內的外鍵,但我不知道如何重置每一年的變化。
對錶中的主鍵使用自動遞增的整數。通過觸發器使證書代碼成爲您維護的另一列。 – 2014-09-19 14:14:19