积极答复者
自动编号如何处理冲突事件

问题
-
1.数据表中的一个ID字段想做成是自动编号,但又不是单纯的数字,前面还有一些字母,具体形式如V000001,S000001,GS000001,递增值是1.这种编号如何设置呢?
2. 在FORM中单击增加按钮时就会增加一个记录,上述的编号会自动显示出来,因为是多个客户端在同时操作,如果其他的客户端也在同时操作的话,会不会同时会出现多个编号如V000002,V000003,V000004.如果其中一个客户端没有保存数据如V000003这个记录没有保存,其他两个人保存了,岂不是表中就会少一条V000003的记录.这样的话这个编号就不会连续了,该如何处理呢?
答案
-
你好
V000001, S000001 和 GS000001 他們是不是在同一個 TABLE 的?
你可不可以 在 TABLE 上建立一個 自動號碼?
之後把字母和 自動號碼 連在一起?如果不可以的話 或者你要寫小小SQL CODE
去找尋 這個 字母最大數量的 數字
E.G
SELECT CAST(RIGHT(MAX(ID),LEN(ID)- LEN('S')) AS INT) +1 AS ID
FROM TABLENAME
WHERE ID LIKE 'S%'
這樣你應該可以找到最大的數字 + 1 的數值的
如果你即時把他 加入數據庫 那便可以 解決 Q2 的問題了
我想你取ID 的動作需要在 DATABASE 上進行..以免出現重複的問題Please correct me if my concept is wrong
Chi- 已建议为答案 Jie BaoModerator 2010年12月14日 10:47
- 已标记为答案 Martin_XieModerator 2010年12月15日 2:24
全部回复
-
你好
V000001, S000001 和 GS000001 他們是不是在同一個 TABLE 的?
你可不可以 在 TABLE 上建立一個 自動號碼?
之後把字母和 自動號碼 連在一起?如果不可以的話 或者你要寫小小SQL CODE
去找尋 這個 字母最大數量的 數字
E.G
SELECT CAST(RIGHT(MAX(ID),LEN(ID)- LEN('S')) AS INT) +1 AS ID
FROM TABLENAME
WHERE ID LIKE 'S%'
這樣你應該可以找到最大的數字 + 1 的數值的
如果你即時把他 加入數據庫 那便可以 解決 Q2 的問題了
我想你取ID 的動作需要在 DATABASE 上進行..以免出現重複的問題Please correct me if my concept is wrong
Chi- 已建议为答案 Jie BaoModerator 2010年12月14日 10:47
- 已标记为答案 Martin_XieModerator 2010年12月15日 2:24
-
你好,
我个人经验,喜欢先查询出这个列的最大值 ,然后加一生成一个新的ID即可。这个似乎和ChiYau的回复是一致的。你可以试试!
Sincerely,
Bob Bao
Bob Bao [MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help.