sql语句问题

789456123 2003-09-14 12:57:14
我在新网有个sqlserver的数据库!上传了若干表,再用过一段时间后,某个表我想将一个int型的字段给为“标示”列!!!
怎么能既改变其字段属性,又保留原有的值???

我用如下办法总是出错:
ALTER TABLE 表 ADD 编号1 bigint identity(1,1) not null
SET IDENTITY_INSERT 表 ON
update 表 set 编号1=编号 (错误提示:无法更新标识列编号1)
SET IDENTITY_INSERT 表 OFF
ALTER TABLE 表 DROP COLUMN 编号
exec sp_rename '表.编号1','编号'

在“update 表 set 编号1=编号”时总是出错:无法更新标识列编号1
...全文
22 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 2003-09-14
  • 打赏
  • 举报
回复
需要用另一种方法:


--备份数据
select * into #tb from 表

--将字段"编号"改为自动编号的列
alter table 表 drop column 编号
alter table 表 add column 编号 bigint identity(1,1)

--重新插回数据
set identity_insert 表 on
insert into 表(编号,其他字段列表) select * from #tb

--删除备份数据的临时表
drop table #tb
vileboy 2003-09-14
  • 打赏
  • 举报
回复
我试了下,在编号1不是自动增加的情况下,是可以的。如果自动增加,出现你这样的错误了。取问下别的高手,比如大力
789456123 2003-09-14
  • 打赏
  • 举报
回复
没有编号重复,类型也没问题
aierong 2003-09-14
  • 打赏
  • 举报
回复


是不是编号重复啦

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧