【SqlServer】修改字段类型提示默认值约束依赖导致无法修改

参考#

https://www.cnblogs.com/longxinyv/p/16702758.html

https://www.cnblogs.com/jialanyu/p/13469848.html

创建表#

对Name添加默认值,使其有默认值约束

create table MyChange
(
  Id int,
  Name varchar(50) default('')
)

执行后

调整类型#

 调整varchar的长度#

alter table MyChange alter column Name varchar(100)

执行成功

 调整为nvarchar的长度#

alter table MyChange alter column Name nvarchar(100)

 执行失败,提示 对象'DF__MyChange__Name__05D8E0BE' 依赖于 列'Name'。

 处理方式#

对约束先删除再创建,可执行下面的语句,对默认值约束的配置进行备份

复制代码
SELECT
[表名]=tab.name
,[列名]=col.name
,[Default约束名]=df.name
,df.definition
,' ALTER TABLE [dbo].['+tab.name+'] ADD CONSTRAINT ['+df.name+'] DEFAULT '+df.definition+' FOR ['+col.name+'] ' +'; ' as AddSql
,' ALTER TABLE '+tab.name+' DROP CONSTRAINT '+df.name+' ; ' as DropSql
FROM sys.default_constraints df
JOIN sys.tables tab ON (df.parent_object_id = tab.object_id)
JOIN sys.columns col ON (df.parent_object_id = col.object_id AND df.parent_column_id = col.column_id)
复制代码

 最终步骤#

1、删除默认值约束

 ALTER TABLE MyChange DROP CONSTRAINT DF__MyChange__Name__05D8E0BE ; 

2、修改类型

alter table MyChange alter column Name nvarchar(100)

3、创建默认值约束

 ALTER TABLE [dbo].[MyChange] ADD CONSTRAINT [DF__MyChange__Name__05D8E0BE] DEFAULT ('') FOR [Name] ; 

 

posted @   我有我奥妙  阅读(765)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
点击右上角即可分享
微信分享提示
CONTENTS