首页 > 数据库 >【SqlServer】修改字段类型提示默认值约束依赖导致无法修改

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

时间:2023-03-04 14:23:14浏览次数:60  
标签:__ MyChange Name df SqlServer 修改 默认值 name

参考

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] ; 

 

标签:__,MyChange,Name,df,SqlServer,修改,默认值,name
From: https://www.cnblogs.com/masonblog/p/17178214.html

相关文章

  • windows 11 右键修改为win10的样式
    windows11右键修改为win10的样式众所周知,win10是windows的最后一个版本。所以,这种三哥写出来的右键邪教,真的是忍无可忍。打开管理员cmdreg.exeadd"HKCU\Software......
  • linux修改ssh默认端口
    1.登录服务器,打开sshd_config文件vim/etc/ssh/sshd_config2.找到#Port22,默认是注释掉的,先把前面的#号去掉,再插入一行设置成你想要的端口号,注意不要跟现有端口号......
  • SqlServer基礎
    REVERSE(欄位)反轉CHARINDEX(篩選字符,欄位,[start])例:CHARINDEX('/',ProImage,13)從13位查詢/所在索引SUBSTRING(欄位,start,end)例:SUBSTRING(ProImage,0,CHARINDEX('/......
  • Linux修改主机名
    Linux安装的时候一般都是使用默认的主机名。一般的主机名为localhost.localdomain。不同的操作系统使用的默认名字不同。 为什么需要修改主机名呢?答案是您无......
  • vue样式穿透 滚动条隐藏 原生样式修改
    样式穿透:deep,否则可能不能覆盖原有样式,vue2使用/v-deep/或者::v-deep,或者取消scoped,但不推荐,因为会影响到其他页面样式<stylelang="scss"scoped>/deep/ .el-table__b......
  • 【SQLServer】列出所有login账号
    GetthelistofallLoginAccountsinaSQLServerSELECTnameASLogin_Name,type_descASAccount_TypeFROMsys.server_principalsWHERETYPEIN('U','S','G......
  • Thunderbird 102修改文字编码
    日期:2023.3.3Thunderbird版本:102.8.0(本文可靠性待验证)最近有同事收我邮件附件显示乱码,基本上确定是文字编码问题,但是Windows新版Thunderbird好像没有修改的地方:进入设置,找到......
  • C:\Windows\System32\drivers\etc\hosts中的文件修改后无法保存
    这个文件定义了IP地址和主机名的映射关系。我们对其进行修改保存时显示没有权限无法保存,我们可以通过以下步骤解决。1、选中hosts文件,右键点击属性。2、在属性面板点击安......
  • 简单介绍Python中如何给字典设置默认值
    这篇文章主要介绍了Python中如何给字典设置默认值问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教Python字典设置默认值我们都......
  • 修改远程桌面连接的默认端口号
    我们都知道,远程桌面连接的默认端口号为3389,很多时候我们都需要修改该默认端口号,不然时常会被一些别有用心的人利用(如:暴力力破解账号密码登录到服务器)。1、......