帮帮我吧,急!!!

789456123 2003-09-14 01:40:33
我在新网有个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
没有编号重复,类型也没问题
由于是在远程,所以不能使用企业管理器!!
...全文
23 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdhdy 2003-09-15
  • 打赏
  • 举报
回复
问题解决了吗?
你应该能在本地注册新网上的数据库实例吧
步骤:
SQlserver企业管理器-->右键SQlserver组-->新建sqlserver注册-->下一步-->写入远程实例名(IP,机器名)-->下一步-->选Sqlserver登陆-->下一步-->写入登陆名与密码(sa,pass)-->下一步-->下一步-->完成
注册好了之后,你就可以用企业管理器设计表的功能,把那个字段选为标识。
--增加标识的方法
SQL SERVER企业管理器-->右键你的表-->设计表-->选中你要设置标识的字段(必须是int类型)-->下面有个属性叫“标识”的,选“是”,你可以按你的要求改一下标识种子或标识递增量,然后保存该表的设计。
yujohny 2003-09-14
  • 打赏
  • 举报
回复
删除表中的所有行,而不记录单个行删除操作。
TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。
对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE
789456123 2003-09-14
  • 打赏
  • 举报
回复
truncate table 表
是什么意思?
sdhdy 2003-09-14
  • 打赏
  • 举报
回复
select * into #temp from 表 order by 编号
go
ALTER TABLE 表 DROP COLUMN 编号
go
ALTER TABLE 表 ADD 编号 bigint identity(1,1) not null
go
truncate table 表
go
SET IDENTITY_INSERT 表 ON
insert 表(编号,col1,col2,...) select 编号,col1,col2,... from #temp
SET IDENTITY_INSERT 表 OFF
go
drop table #temp
yujohny 2003-09-14
  • 打赏
  • 举报
回复
sdhdy(大江东去...) ,这样假如有关联的明细表,不是都没了?
假如级联删除的话,明细数据都没有了
那保留编号值,还有什么用?
sdhdy 2003-09-14
  • 打赏
  • 举报
回复
--做前自己先备份一下数据
select * into #temp from 表 order by 编号
ALTER TABLE 表 DROP COLUMN 编号
ALTER TABLE 表 ADD 编号 bigint identity(1,1) not null
truncate table 表
SET IDENTITY_INSERT 表 ON
insert 表(编号,col1,col2,...) select 编号,col1,col2,... from #temp
SET IDENTITY_INSERT 表 OFF
drop table #temp
789456123 2003-09-14
  • 打赏
  • 举报
回复
因为原值正在使用!作为id号和其他表相关
yujohny 2003-09-14
  • 打赏
  • 举报
回复
要这样改,那我还没想出办法,为什么一定要保留值?

11,848

社区成员

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

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