我有一个sybase表(“Test”),其中包含以下列:
MyIdentity numberic(9,0)
Name
User
该表充满了大量记录。我想将MyIdentity专栏改为身份。
表中目前没有MyIdentity的重复值。我如何改变表并将MyIdentity设置为身份?
答案 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)
只需使用:
create index MyIdentity on Test
请参阅http://manuals.sybase.com/onlinebooks/group-as/asg1250e/sqlug/@Generic__BookTextView/36137;pt=36137。