SQLServer中如何删除字段的自增标识

如何用sql语句去掉表中字段自增标识:


--创建一个普通列

ALTER TABLE dbo.表名 ADD 列名 INT 

GO

--将自增列数据插入新建列名中

UPDATE dbo.表名 SET 列名 = 自增列名;

GO

--删除自增列

ALTER TABLE dbo.表名 DROP COLUMN 自增列名 

GO

--修改增加的列名为自增列的列明

EXEC sys.sp_rename @objname = N'表名.列名', 

@newname = '自增列名', 

@objtype = 'COLUMN'



一张表有外键或者主键时,如何用sql语句去掉表中字段自增标识
语句如下(多个主键,多个外键不行):


--创建一个普通列

IF NOT  EXISTS ( SELECT  * FROM    sys.columns WHERE   object_id = OBJECT_ID('Table_1') AND name = 'id1') 

BEGIN

ALTER TABLE dbo.Table_1 ADD    id1 INT 

END 

GO 


IF EXISTS (SELECT COLUMNPROPERTY( OBJECT_ID('Table_1'),'id','IsIdentity'))

BEGIN

DECLARE @name NVARCHAR(100)--外键名

DECLARE @id NVARCHAR(100)--主键id

DECLARE @name1 NVARCHAR(100)--主键名

DECLARE @sql VARCHAR(MAX)


--删除外键

IF EXISTS ( SELECT name from sys.foreign_key_columns f join sys.objects o on f.constraint_object_id=o.object_id where f.parent_object_id=object_id('Table_1'))

BEGIN

SET @name= (SELECT name from sys.foreign_key_columns f join sys.objects o on f.constraint_object_id=o.object_id where f.parent_object_id=object_id('Table_1'))

SET @sql='alter table Table_1 drop constraint '+ @name 

EXEC(@sql)

END 


--删除主键

IF EXISTS ( SELECT CONSTRAINT_NAME,COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME='Table_1')

BEGIN

SELECT @name1=CONSTRAINT_NAME,@id=COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME='Table_1'

END 

SET @sql='Alter table  Table_1  Drop Constraint '+ @name1 

PRINT @sql

EXEC(@sql)


--将自增列数据插入新建列名中

UPDATE dbo.Table_1 SET id1 = id


--删除自增列

ALTER TABLE dbo.Table_1 DROP COLUMN ID 


--修改增加的列名为自增列的列明

EXEC sys.sp_rename @objname = N'Table_1.id1', 

    @newname = 'id', 

    @objtype = 'COLUMN' 


--重新增加主键

IF ISNULL(@name1,'')<>''

BEGIN

SET @sql='ALTER table Table_1 add CONSTRAINT '+ @name+' Primary  Key('+@id+') '

EXEC(@sql)

END 


--重新增加外键

IF ISNULL(@name,'')<>''

BEGIN

SET @sql='ALTER table Table_1 add CONSTRAINT '+ @name+' foreign key(id) references Table_2('+@id+') '

EXEC(@sql)

END


END 

GO 


--是否存在一个普通列

IF EXISTS ( SELECT  * FROM    sys.columns WHERE   object_id = OBJECT_ID('Table_1') AND name = 'id1') 

BEGIN

ALTER TABLE dbo.Table_1 DROP COLUMN id1  

END 

GO 



原创: https://www.cnblogs.com/summert/p/7000090.html


请使用浏览器的分享功能分享到微信等