【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
相关推荐
Code季风19 分钟前
SQL关键字快速入门:HAVING 分组后的条件过滤
数据库·sql·mysql
星辰离彬13 小时前
Java 与 MySQL 性能优化:Java应用中MySQL慢SQL诊断与优化实战
java·后端·sql·mysql·性能优化
zhuiQiuMX15 小时前
脉脉maimai面试死亡日记
数据仓库·sql·面试
GEEK零零七21 小时前
Leetcode 1070. 产品销售分析 III
sql·算法·leetcode
贾修行21 小时前
SQL Server 空间函数从入门到精通:原理、实战与多数据库性能对比
数据库·sqlserver
御控工业物联网1 天前
御控网关如何实现MQTT、MODBUS、OPCUA、SQL、HTTP之间协议转换
数据库·sql·http
Code季风1 天前
SQL关键字快速入门:CASE 实现条件逻辑
javascript·数据库·sql
kk在加油1 天前
Mysql锁机制与优化实践以及MVCC底层原理剖析
数据库·sql·mysql
合作小小程序员小小店1 天前
web网页开发,在线%ctf管理%系统,基于html,css,webform,asp.net mvc, sqlserver, mysql
mysql·sqlserver·性能优化·asp.net·mvc
满昕欢喜1 天前
SQL Server从入门到项目实践(超值版)读书笔记 20
数据库·sql·sqlserver