【Sql Server修改列类型错误信息:对象名依赖于列】

Sql Server修改列类型错误信息:对象名依赖于列

报错信息

修改表中列类型,发生报错如下:

bash 复制代码
[SQL Server]对象'DF__Forecast___isCal__4E746892' 依赖于 列'isCalcFinished'。 (5074) [42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]由于一个或多个对象访问此列,ALTER TABLE ALTER COLUMN isCalc

解决方法

Sql Server修改列类型错误信息:对象名依赖于列

原因:存在默认约束

解决:

--1.查找出表中该字段的(默认)约束名称

declare @name varchar(50)

select @name =b.name from sysobjects b join syscolumns a on b.id = a.cdefault

where a.id = object_id('表名')

and a.name ='字段名'

--2. 删除存在的(默认)约束

exec('alter table 表名 drop constraint ' + @name)

--修改字段类型

ALTER TABLE 表名 ALTER COLUMN 字段名 INT

--添加默认约束

alter table 表名

add constraint DF_表名_字段名 default(0) for 字段名

测试sql语句

修改表中列类型为int

sql 复制代码
--1.查找出表中该字段的(默认)约束名称
declare @name varchar(50)
select  @name =b.name from sysobjects b join syscolumns a on b.id = a.cdefault 
where a.id = object_id('Forecast_ProgramInfo_Plus_Rollcc') 
and a.name ='isCalcFinished'


--2. 删除存在的(默认)约束
exec('alter table Forecast_ProgramInfo_Plus_Rollcc  drop constraint ' + @name)


--修改字段类型
ALTER TABLE Forecast_ProgramInfo_Plus_Rollcc ALTER COLUMN isCalcFinished INT  


--添加默认约束
alter table Forecast_ProgramInfo_Plus_Rollcc
add constraint DF_Forecast_ProgramInfo_Plus_Rollcc_isCalcFinished default(0) for isCalcFinished
相关推荐
Theo·Chan14 小时前
机房断电搞崩服务器 | 人大金仓 V8 全量备份跨实例完整恢复实录
sql·信创·kingbase·金仓
持敬chijing17 小时前
Web渗透之SQL注入总结
sql·安全·web安全·网络安全·网络攻击模型·web
davawang17 小时前
基于SQL实现分组的文字排序聚合
sql·分析函数·数据平台
可乐ea20 小时前
【Spring Boot + MyBatis|第4篇】MyBatis 动态 SQL:if、where、foreach 使用详解
java·spring boot·后端·sql·mybatis
IvorySQL20 小时前
PostgreSQL 技术日报 (6月8日)|索引预取迭代,AI 安全功能上新
数据库·人工智能·sql·安全·postgresql
持敬chijing21 小时前
Web渗透之SQL注入-SQLMAP使用笔记
数据库·sql·安全·web安全·网络安全·网络攻击模型
千里马学框架21 小时前
重学Perfetto浏览器在线抓取trace及高频sql分享
android·sql·智能手机·架构·aaos·perfetto·车机
xuefuhe21 小时前
SQL Server变量复用陷阱
sqlserver
逍遥德1 天前
PostgreSQL --- 二进制数使用详解
数据库·sql·postgresql
swordbob2 天前
MySQL字符集陷阱:从Oracle迁移踩坑到utf8mb4强制规范
数据库·sql