【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
相关推荐
吴声子夜歌14 小时前
SQL经典实例——使用多张表
数据库·sql
摇滚侠18 小时前
MyBatis 入门到项目实战 特殊 SQL 的执行 34-37
java·sql·mybatis
layflat_coder19 小时前
NL2SQL 正确率怎么提升:ChatBI 的 `<error-msg>` 错误反馈闭环
sql
摇滚侠1 天前
MyBatis 入门到项目实战 MyBatis 分页插件 65-66
java·开发语言·sql·mybatis
北风toto1 天前
深度拆解:本体与智能体协同生成SQL的底层逻辑与工程实践
数据库·sql·microsoft
倒流时光三十年1 天前
PostgreSQL NULLIF 条件表达式函数详解
数据库·sql·postgresql
czhc11400756631 天前
614 :代码修正: halcon 注销;sql配置修改
sql
文盲老顾1 天前
sqlserver 根据IP和数量,计算应该使用的掩码IP地址段
sqlserver·递归·自定义函数·cte·ip掩码·表值函数
吴声子夜歌1 天前
SQL经典实例——插入、更新和删除
数据库·sql
山峰哥1 天前
VBA数据结构之争:Dictionary vs Collection,性能差3倍!
服务器·数据结构·数据库·windows·sql·算法·哈希算法