Sql Server 更换列名脚本

本文介绍了两种在SQL中修改表列名的方法:一种是直接使用sp_rename存储过程进行更改;另一种是通过创建新列、复制旧列数据、删除约束及最终移除旧列的方式来实现更为稳妥的修改。

前段时间发现自己之前建的表名字段拼写存在问题,趁该表数据量还不算大的时候,编写脚本修改列名。

1. 比较简单粗暴的方式是:

EXEC sp_rename @objname='[schema].[tablename].[errorcolumnname]',@newname='newname',@objtype='column'

2. 保险方法:【步骤:新增列,将问题列数据copy,删除问题列的约束,删除问题列】

IF COL_LENGTH('tablename', 'errorcolumnname') IS NOT NULL

BEGIN  

SET XACT_ABORT ON    

begin transaction UpdateColumnName 

ALTER TABLE [schema].[tablename]  ADD [newname] INT NOT NULL DEFAULT(0)    

Exec sp_executesql N'UPDATE [schema].[tablename] SET [newname] = [errorcolumnname]'

DECLARE  @constraintName NVARCHAR(100)  

SELECT @constraintName = b.name FROM sysobjects b JOIN syscolumns a ON b.id = a.cdefault WHERE a.id = object_id('tablename') AND a.name = 'errorcolumnname'

IF @constraintName IS NOT NULL  

BEGIN   

EXEC ('ALTER TABLE [schema].[tablename] DROP CONSTRAINT '+ @constraintName)  

END     

ALTER TABLE [schema].[tablename]  

DROP COLUMN errorcolumnname  

commit transaction UpdateColumnName

END

 

转载于:https://www.cnblogs.com/Ying150318/p/5923924.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值