2016-12-20 61 views
1

我們有一個要求,我們將有一個字段值自動生成。自動值的格式應該是Currentyear-Dept-001。根據Dept,計數器需要遞增,就像部門是英語一樣,2016-English-001下一個2016-English-002,如果部門是Maths計數器需要從2016年第一次開始 - Maths-001開始。我正在考慮創建一個可以接受部門名稱並返回每個部門自動生成的值的API。如果是這樣,我將不得不在數據庫中創建一個表格,如何分別爲每個部門設置計數器?因爲我們沒有數據庫中的部門,有時新的部門將會進入。現在不知道如何繼續這個。任何幫助非常感謝Webservice返回自動增加數據庫中的值

+0

兩個查詢生成的代碼,同時保存數據。而不是在保存記錄時從服務器獲取代碼。用計數器設置一個新列來計算部門 – rashfmnb

+0

您的問題本質上是一系列的requirements_。 [問] – MickyD

回答

3

你可以做到這一點與這2個查詢。第一個插入一個新部門或增加計數,如果它存在。第二次讀最後的計數。你也可以把一個存儲過程中

INSERT INTO myDept (Dept) VALUES ('English') 
ON DUPLICATE KEY UPDATE cnt = cnt +1; 

SELECT Dept, CONCAT(YEAR(NOW()),'-',Dept,'-',cnt) as Dept_cnt 
FROM myDept 
WHERE Dept = 'English'; 

樣品

mysql> SELECT * FROM myDEpt; 
Empty set (0,00 sec) 

mysql> INSERT INTO myDept (Dept) VALUES ('English') 
    -> ON DUPLICATE KEY UPDATE cnt = cnt +1; 
Query OK, 1 row affected (0,00 sec) 

mysql> 
mysql> SELECT Dept, CONCAT(YEAR(NOW()),'-',Dept,'-',cnt) as Dept_cnt 
    -> FROM myDept 
    -> WHERE Dept = 'English'; 
+---------+----------------+ 
| Dept | Dept_cnt  | 
+---------+----------------+ 
| English | 2016-English-1 | 
+---------+----------------+ 
1 row in set (0,00 sec) 

mysql> INSERT INTO myDept (Dept) VALUES ('English') 
    -> ON DUPLICATE KEY UPDATE cnt = cnt +1; 
Query OK, 2 rows affected (0,00 sec) 

mysql> 
mysql> SELECT Dept, CONCAT(YEAR(NOW()),'-',Dept,'-',cnt) as Dept_cnt 
    -> FROM myDept 
    -> WHERE Dept = 'English'; 
+---------+----------------+ 
| Dept | Dept_cnt  | 
+---------+----------------+ 
| English | 2016-English-2 | 
+---------+----------------+ 
1 row in set (0,00 sec) 

mysql> SELECT * FROM myDEpt; 
+---------+------+ 
| Dept | cnt | 
+---------+------+ 
| English | 2 | 
+---------+------+ 
1 row in set (0,00 sec) 

mysql> INSERT INTO myDept (Dept) VALUES ('Math') 
    -> ON DUPLICATE KEY UPDATE cnt = cnt +1; 
Query OK, 1 row affected (0,00 sec) 

mysql> 
mysql> SELECT Dept, CONCAT(YEAR(NOW()),'-',Dept,'-',cnt) as Dept_cnt 
    -> FROM myDept 
    -> WHERE Dept = 'Math'; 
+------+-------------+ 
| Dept | Dept_cnt | 
+------+-------------+ 
| Math | 2016-Math-1 | 
+------+-------------+ 
1 row in set (0,00 sec) 

mysql> SELECT * FROM myDEpt; 
+---------+------+ 
| Dept | cnt | 
+---------+------+ 
| English | 2 | 
| Math | 1 | 
+---------+------+ 
2 rows in set (0,00 sec) 

mysql>