none
如何sql语句设置自动增长列 RRS feed

  • 问题

  • 现在test表的ID字段为int主键.

    想给他增加自动增长的属性,网上搜了一下说是:

    alter table test alter column id int IDENTITY

    但是报错

    消息 156,级别 15,状态 1,第 2 行

    关键字 'IDENTITY' 附近有语法错误。


    2010年8月11日 8:04

答案

  • 将原列的数据更新到新列啊
    有dba的职位吗(北京的),请联系我 stswordman#hotmail.com
    • 已标记为答案 male110 2010年8月12日 1:23
    2010年8月11日 9:41
    版主

全部回复

  • 没有这样的sql语句.

    有个变通:

    你可以添加一个自增列, 

    开启IDENTITY_INSERT, 

    将原列的值入自增列,

    删除原列,

    将新的列更名,

    重新赋予权限(如果对原列有权限设置)


    有dba的职位吗(北京的),请联系我 stswordman#hotmail.com
    2010年8月11日 9:12
    版主
  • 添加新列?

    数据呢?


    2010年8月11日 9:22
  • 将原列的数据更新到新列啊
    有dba的职位吗(北京的),请联系我 stswordman#hotmail.com
    • 已标记为答案 male110 2010年8月12日 1:23
    2010年8月11日 9:41
    版主
  • --drop table test 
    create table test(id int not null,value int)
    insert test select 1,2 
    union all select 2,3
    union all select 3,4
    go
    --方法如下
    --建个表结构一样的表 注意ID属性为自增
    CREATE TABLE test_tmp(ID int IDENTITY,value int)
    --将test表的内容copy到过渡表来
    SET IDENTITY_INSERT test_tmp ON
    INSERT test_tmp(ID,value ) SELECT * FROM test
    SET IDENTITY_INSERT test_tmp OFF
    --删除test
    DROP TABLE Test
    GO
    --将过渡表名字改成test
    EXEC sp_rename N'test_tmp',N'test'
    INSERT test select 4
    GO
    select * from test
    /*
    ID     value
    ----------- -----------
    1      2
    2      3
    3      4
    4      4*/
    
    2010年8月11日 12:49