首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

把非自增的字段转换成自增字段解决办法

2012-03-09 
把非自增的字段转换成自增字段有大量的表要转换,把非自增字段转为自增,并加主键有没有这样的存储过程啊?[

把非自增的字段转换成自增字段
有大量的表要转换,把非自增字段转为自增,并加主键

有没有这样的存储过程啊?

[解决办法]
没有
可用动态生成语句

如:

SQL code
--删除主健select 'alter table '+quotename(a.name)+' drop constraint ' +QUOTENAME(b.Name)from sys.objects as a    inner join  sys.objects as b on a.object_id=b.parent_object_id and b.type='PK'where not exists(select 1 from sys.columns where object_id=a.object_id and is_identity=1) and a.type='U'--新增标识列为主健,列名为ID,首先要定义好列名的唯1select 'alter table '+quotename(name)+' add ID int identity(1,1) primary key' from sys.objects as a where not exists(select 1 from sys.columns where object_id=a.object_id and is_identity=1) and type='U'
[解决办法]
SQL code
--创建测试表CREATE TABLE t1(ID int IDENTITY,A int)GO--插入记录INSERT t1 VALUES(1)GO--1. 将IDENTITY(标识)列变为普通列ALTER TABLE t1 ADD ID_temp intGOUPDATE t1 SET ID_temp=IDALTER TABLE t1 DROP COLUMN IDEXEC sp_rename N't1.ID_temp',N'ID',N'COLUMN'INSERT t1 VALUES(100,9)GO--2. 将普通列变为标识列CREATE TABLE t1_temp(ID int,A int IDENTITY)SET IDENTITY_INSERT t1_temp ONINSERT t1_temp(ID,A) SELECT * FROM t1SET IDENTITY_INSERT t1_temp OFFDROP TABLE T1GOEXEC sp_rename N't1_temp',N't1'INSERT t1 VALUES(109999)GO--显示处理结果SELECT * FROM t1/*--结果:ID          A ----------------- ----------- 1           1100         9109999      10--*/
[解决办法]
大量的应该就需要动态拼接了。
[解决办法]
搞那么复杂干嘛
直接图形界面改就是了
[解决办法]
探讨

搞那么复杂干嘛
直接图形界面改就是了

[解决办法]
探讨

引用:

搞那么复杂干嘛
直接图形界面改就是了

去点两下就好了

[解决办法]
探讨
有大量的表要转换,把非自增字段转为自增,并加主键

有没有这样的存储过程啊?

热点排行
Bad Request.