我的数据表的一个主键为varchar(8)类型
目前在表中没有记录的情况下,如何插入一条新的记录,形式如:00000001
并在以后的插入中自动编号!

解决方案 »

  1.   

    select Left('00000000'+convert(varchar(8),max(convert(int,NO))+1),8) from table
      

  2.   

    select right(100000001+isnull(max(fieldname),0)) from tablename
      

  3.   

    create function f_next()
    returns char(8)
    as
    begin
    select right(100000001+isnull(max(fieldname),0),8) from tablename
    end将f_next()设为主键的默认值,或者
    insert table values(f_next())
      

  4.   

    create function f_nextbh()
    returns char(8)
    as 
    begin
    return(select right(100000001+isnull(right(max(bh),8),0),6) from tb whith (xlock,paglock))
    end
    go
    create table tb
    (bh char(8) prinmary key default dbo.f_nextbh()
    )
    go
      

  5.   

    楼主要自动编号的话,int型才可以呀.不过你可以设两个字段,一个int型的用于自动编号,一个是char(8)型的,用于你的需求,不过字符字段是计算列if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TABLE1]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[TABLE1]
    GOCREATE TABLE [dbo].[TABLE1] (
    [rowid] [int] IDENTITY (1, 1) NOT NULL ,
    [text] AS (right(('00000000' + convert(varchar,[rowid])),8)) ,
    [str] [char] (10) COLLATE Chinese_PRC_CI_AS NULL 
    ) ON [PRIMARY]
    GO这样可以自动生成自增,不用自已写代码求出自增的值
      

  6.   

    即增加一个int型的自增长字段,然后将现在的主键改成计算列,写上计算公式.通过int型值得到char型字符串,这样在客户端就不用写代码了,惟护也方便.