create table 你的表 (编号 as right(10001+辅助列,4),辅助列 int identity(1,1),其他列 char(10))
insert 你的表 (其他列) values('ss')
select * from 你的表

解决方案 »

  1.   

    create table 你的表 (编号 as right(10000+辅助列,4),辅助列 int identity(1,1),其他列 char(10))
    insert 你的表 (其他列) values('ss')
    select 编号,其他列 from 你的表
    go
    drop table 你的表
      

  2.   

    1:
    create function getDH 
    returns char(10)
    As
    begin
        declare @dh1 char(10),@dh2 char(10)
        select @dh1 = max(dh) from  tableName 
        set @dh2 = right('0000'+ cast(cast(right(@dh1,4)as int)+1 
       return(@dh2)
    end/********
       Usage: select dbo.getdh
    *******/
    2:在默认值中填入 dbo.getdh()
      

  3.   

    1:
    create function getDH 
    returns char(10)
    As
    begin
        declare @dh1 char(10),@dh2 char(10)
        select @dh1 = min(dh) from  tableName 
        where right('0000'+ cast(cast(right(dh,4) as int)+1 as varchar),4) 
              not in (select dh from tableName) 
        set @dh2 = right('0000'+ cast(cast(right(@dh1,4)as int)+1 
       return(@dh2)
    end
    2:在默认值中填入 dbo.getdh()
      

  4.   

    1:
    create function getDH 
    returns char(10)
    As
    begin
        declare @dh1 char(10),@dh2 char(10)
        select @dh1 = max(dh) from  tableName 
        set @dh2 = right('0000'+ cast(cast(right(@dh1,4)as int)+1 as varchar),4) 
       return(@dh2)
    end/********
       Usage: select dbo.getdh
    *******/
    2:在默认值中填入 dbo.getdh()
      

  5.   

    http://expert.csdn.net/Expert/topic/2338/2338683.xml?temp=.4040949 如何产生中间空的编号.
    其中当用户删除了编号为0002的纪录后,假设此时最大的编号大于0002,在插入新数据时,系统自动产生的编号应该是0002而不是‘最大编号+1'
    我贴出的问题就是为这个问题解决的.
      

  6.   

    to yujohny(踏网无痕) 
    你的方法第一步我已经试过,除了一个小错外(后面指明),都能通过。可在把getdh()指定为列的默认值时,显示了是字符串‘getdh()’,而不是getdh()返回的内容,就指教!小错:
    set @dh2 = right('0000'+ cast(cast(right(@dh1,4)as int)+1 
    应该为:
    set @dh2 = right('0000'+ cast(cast(right(@dh1,4)as int)+1 as varchar),4) 
      

  7.   

    上面我提的问题我已经解决了,应该用(dbo.getdh())
      

  8.   

    set @dh2 = right('0000'+ cast(cast(right(@dh1,4)as int)+1 as varchar),4)改为:set @dh2=right(right(@dh1,4)+10001,4)
      

  9.   

    除了表值函数前面必须加所有者如: dbo.xxx