SQL Server修改已有字段类型,并添加默认约束

    当数据表中存在数据,修改具有默认约束的字段定义时,需要先删除已有约束,才能对字段定义进行修改;而在SQL Server建表时创建的默认约束,其名称后会自动生成一段随机码,因此在删除时需要找到(在SQL Server Management Studio中选择表——>约束,可以看到以DF_开头的默认约束)已有约束名,再进行删除,这一过程较为繁琐。

    现采用以下代码实现对默认约束的自动匹配,并修改。看代码:

-- 修改已有字段类型(eg:整型)为字符串,并添加、修改(如果有的话)默认约束(默认值为空串)
USE [库名]
DECLARE @name VARCHAR(50);
SELECT @name=b.name FROM syscolumns a,sysobjects b 
WHERE a.id=object_id('[LGShare_OrgFiles]') AND b.id=a.cdefault AND a.name='FromWhere' AND b.name LIKE 'DF%';
IF @name IS NOT NULL BEGIN
    EXEC('ALTER TABLE [表名] DROP CONSTRAINT '+@name); --删除已有约束
    ALTER TABLE [表名] ALTER COLUMN [列名] NVARCHAR(4) NOT NULL; --修改字段定义
    EXEC('ALTER TABLE [表名] ADD CONSTRAINT '+@name+' DEFAULT '+''''+''''+' FOR [列名]'); -- 添加修改后的约束,注意此处空串的写法
END
ELSE BEGIN 
    ALTER TABLE [表名] ADD CONSTRAINT DF_列名 DEFAULT '' FOR [列名]; --添加新约束
END


f you have any questions or any bugs are found, please feel free to contact me.

Your comments and suggestions are welcome!



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Heartsuit

别说什么鼓励,这就是互联网乞讨

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值