更改表集标识列

时间:2012-03-05 17:37:48

标签: sybase

我有一个sybase表(“Test”),其中包含以下列:

MyIdentity numberic(9,0)
Name
User

该表充满了大量记录。我想将MyIdentity专栏改为身份。

表中目前没有MyIdentity的重复值。我如何改变表并将MyIdentity设置为身份?

3 个答案:

答案 0 :(得分:0)

显然你不能,比如

Create a new Table called test2 with the identity set up

Then

Set Identity_Insert Test2 On

Insert Test2 Select * From Test

Set Identity_Insert Test2 Off

Drop Test and Rename Test 2...

答案 1 :(得分:0)

至少在我的版本(Adaptive Server Enterprise / 15.0.3)上,以下似乎可以解决这个问题(省略了语法糖):

添加新的标识列:

alter table Test add newMyIdentity numeric(9,0) identity not null

准备更新:

set identity_insert Test on
set identity_update Test on

复制现有ID(以便能够保留外键等):

update Test set newMyIdentity=MyIdentity

删除旧定义,重命名新创建的列:

alter table Test drop MyIdentity
sp_rename "Test.newMyIdentity", MyIdentity

清理:

set identity_insert Test off
set identity_update Test off
sp_recompile Test

答案 2 :(得分:-1)