2010-09-08 20 views
1

這樣的字段客戶希望mysql DB中的字段由前綴,年份和每年重置的計數器組成。 PREFIX 2010 0001 ... PREFIX 2010 0734,然後是PREFIX 2011 0001.是否有任何的mysql技巧可以實現這一點,或者我是否跟蹤每年使用的最大數字。任何想法讚賞。客戶需要像PREFIX20100001

回答

1

MySQL不能創建這樣複雜的領域,但你可以create a view將模擬它的基礎上,是這樣的:

SELECT CONCAT('PREFIX', YEAR(NOW()), MOD(id, 10000)), ... 

只要有不超過10,000的這一年,它作爲「公共」主鍵相對安全。另一方面,如果id字段在後臺是一個普通的auto_increment int,那麼你需要一個真正的主鍵。

+1

在新年伊始,id部分如何重置爲'0001'? – 2010-09-09 00:06:04

+0

...還有 - 對於id部分的前導零來說呢?示例代碼產生的第一個值是'PREFIX20101',我認爲。 – 2010-09-09 00:12:56

+1

夠正確。基於REPEAT(),LENGTH()等的一些魔法可以處理填充/格式化。年度重置將會更加困難。可能是一個年度事件觸發器的服務器端變量,用適當的偏移/模數更新......它需要一些實驗,但這個答案的基礎很可能是最好的解決方案。 – 2010-09-09 01:01:47