none
自动编号如何处理冲突事件 RRS feed

  • 问题

  • 1.数据表中的一个ID字段想做成是自动编号,但又不是单纯的数字,前面还有一些字母,具体形式如V000001,S000001,GS000001,递增值是1.这种编号如何设置呢?

    2. 在FORM中单击增加按钮时就会增加一个记录,上述的编号会自动显示出来,因为是多个客户端在同时操作,如果其他的客户端也在同时操作的话,会不会同时会出现多个编号如V000002,V000003,V000004.如果其中一个客户端没有保存数据如V000003这个记录没有保存,其他两个人保存了,岂不是表中就会少一条V000003的记录.这样的话这个编号就不会连续了,该如何处理呢?

    2010年12月4日 0:11

答案

  • 你好

    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
    2010年12月4日 10:41
    版主

全部回复

  • 你好

    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
    2010年12月4日 10:41
    版主
  • 谢谢版主的回复.

     

    我试试先

    2010年12月6日 3:46
  • 你好,

    我个人经验,喜欢先查询出这个列的最大值 ,然后加一生成一个新的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.

    2010年12月14日 10:47
    版主