update table set fieldname=right('000000'+rtrim(cast(fieldname as int)+1),7)

解决方案 »

  1.   

    declare @a char(7)
    set @a = '0000001'
    select right(cast(10000000 + cast(@a as int) + 1 as char(8)),7)
      

  2.   

    如果你不想在程序中做的话可以用触发器来实现。注意你的fieldname如果是主键或在其上有唯一索引的话,你一次只能插入一行,要有默认值,否则当你在程序中插入的时候一定会出错!如果不是主键的话就好处理一些。但此列要么允许为空要么有默认值,可以批量插入多行create trigger trigger_name on table_name for insert as
    declare @maxid char(7)select @maxid=fieldname from table_name,inserted 
    where table_name.fieldname<>inserted.fieldnameupdate table_name set @maxid=fieldname=right('000000'+rtrim(cast(@maxid as int)+1),7)
    from inserted 
    where 
          inserted.fieldname=table_name.fieldname