oracle和sybase都有序号生成器,不知道sql server 有没有,有的话,可是使用。前端程序无须考虑编号是否重复,服务器会完成这一工作。

解决方案 »

  1.   

    使用自增字段呀!sql server ,oracle.sybase 都有!
      

  2.   

    CREATE TABLE TBSample ( RecId INT IDENTITY)
    OK?
      

  3.   

    编号是由字母和数字构成,如AAA-01-00001只能用字符字段,怎么办
      

  4.   

    1、首先保存一条空记录到库中,把序号先占上,当然不允许空的其他字段要添点东西,还要有个字段做有效标记,当用户真正保存时,用update命令修改这条记录将有用的内容添全,如果用户不保存,删了这条事先加好的记录就行了。但可能会产生空号。
    或者:
    2、在向数据库中保存的瞬间根据库中已有序号产生新序号,那要看你的并发用户有没有可能在这一瞬间(索引旧序号、计算新序号、保存新记录加一起的时间)同时操作。
      

  5.   

    我是这样解决的:
    建一个表存储最大号,每个人操作时取最大号,后加1,然后和必要字符合成编码
    例:当前最大号:12
    1.提取12,后加1,当前最大号:13(别人仍可用)
    2.合成编码AAA-01-00012
    此方法绝对有效,其隐患:会产生断号.
      

  6.   

    to renzhm(戴尔飞):可以。
    我再说一下我的办法,前面可能没说清:
    1、首先根据库中已有序号产生新序号,追加一条用新序号的空记录到库中,先占上此序号,当然不允许空的其他字段要添点东西,还要有个字段做有效标记,当用户真正保存时,用update命令修改这条记录将有用的内容添全,如果用户不保存,删了这条事先加好的记录就行了。但可能会产生空号。
    或者:
    2、先不生成序号,在向数据库中提交保存的时候根据库中已有序号产生新序号,那要看你的并发用户有没有可能在这一瞬间(索引旧序号、计算新序号、保存新记录加一起的时间)同时操作。