想SQL2000能够使用ACCESS自动编号那样的主键,如何实现,谢谢
identity有个缺点,比如id为1,2,3,4时,我删除了2,则不是1,3,4 而是1,2,3 
此问题如何解决,求达人指点~

解决方案 »

  1.   

    如果你又用了identity
    又想实现连续的话
    那么就要用的触发器实现了,
    不过不建议用这样的方法,因为实在是消耗太多的资源了,不划算!
      

  2.   

    哦,我理解错了,identity实现的是不连续的吧
    identity只能处理整型,如果我的主键是字符型的呢??如何以较少的资源消耗来实现
    多谢~
      

  3.   

    nbstars() ( ) 信誉:100 
    哦,我理解错了,identity实现的是不连续的吧
    identity只能处理整型,如果我的主键是字符型的呢??如何以较少的资源消耗来实现
    多谢~
    -------
    identity本身是连续的:
    identity(int,1,1)  初始值为1,每增加一行它的值就自加1
    -----------------------------------------------------
    只不过是你做了删除的操作才导致它不连续
    如果你的主键是字符型的话,想它连续的话,
    更加难~~~等高人给你更好的解释吧^_^
      

  4.   

    是的,我知道,我正好也要不连续的,
    主要是字符型怎么使用identity,要转换两次类型吗?有没有更简单一点的操作啊????
      

  5.   

    字符型?用计算公式试试,如:
    create table T
    (
          id int identity(1,1),
          CharID as (right('000000' + cast(id as varchar(100)),6)),   --公式字段
          name varchar(100)
    )
    insert into T (name) select 'a'
    insert into T (name) select 'b'
    insert into T (name) select 'c'
    select * from Tdrop table T
      

  6.   

    Declare @Int int
    Declare @Char Varchar(8)
    Set @Int=1
    Set @Char=Right('00000000'+Cast(@Int As Varchar),8)
    Print @Char
    /*
    00000001
    */
      

  7.   

    wangtiecheng(不知不为过,不学就是错!) ( ) 信誉:100 
    的例子很好的体现了
    Identity(int,1,1) 与字符型的转换了...