identity属性列的值不允许修改,删除该列再重建吧。alter table message drop column id
goalter table message add id int identity(1,1)
go

解决方案 »

  1.   

    你看看你哪个表示不在,可以重新插入一条记录,表示是刚才你删除的表示。
    必须这样插入
    SET IDENTITY_INSERT test ON
    insert into test(id,name,groups)
    values(3,'ok','8')
      

  2.   

    你看看你哪个标识不在,可以重新插入一条记录,表示是刚才你删除的表示。
    必须这样插入
    SET IDENTITY_INSERT test ON
    insert into test(id,name,groups)
    values(3,'ok','8')
    这个3是我刚删除的标识。
      

  3.   

    --identity属性可以修改  
    create  table message 
    (id int identity(1,1) constraint pk_id primary key  ,
    name nvarchar(20))
    go
    insert message
    select 'aaa' union all
    select 'bbb' union all 
    select 'ccc' union all
    select 'ddd' 
    go
    delete message
    where id = 3
    go
    set identity_insert message on  --先把它设为ON就可以插入数据了  
    insert message (id,name)
    values (3,'重新插入')  
    set identity_insert message off --然后关一下
    go
    select * from message
    /*结果
    1 aaa
    2 bbb
    3 重新插入
    4 ddd
    */
      

  4.   

    我怎么看不懂大家所说的呢,我的意思是,
    例如我的列(也就是主键)id 记录为1 2 3 4 5 6
    当我删除其中一个记录,比如是记录3时,
    使id记录为1 2 3 4 5
      

  5.   

    如果ID是自增列,如果删除了3那么结果会变成12456。
    如果你想把后面的列自动向上移从而得到12345这样的效果,那么就得重制ID列。
    如果数据量小,重制问题还不大。如果数据量很大,这样做效率就很差了。
      

  6.   

    楼上说的很有道理,我就是想重制ID,就是要先删除ID(ID是主键),然后再添加列ID,并设置为主键
      

  7.   

    我覺得需要ID是自動增長的主鍵是可以的,但要刪除後保持ID連續再重制的話很麻煩,如果你只是想有一個連續的編號,那就再設一個字段爲INT型,每次修改記錄時修改這個字段就行了
      

  8.   

    删除主键是可以的,但是要先删除主键约束,现在有一个问题就是我删除主键之后,再建ID为主键的时候,主键约束的名字却不一样啊,我参考了一段SQL语句,但还是没有实现出来,大家帮忙下
    declare @PK varchar(100)
    create table a (bb varchar(10) not null,cc money)alter table a add primary key (bb)select @pk=name from sysobjects where xtype='PK' and parent_obj=object_id('message')
    '                                                                  exec ('alter table message drop CONSTRAINT '+@pk)