【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
相关推荐
倒流时光三十年5 小时前
第六阶段 57 · ES|QL 与 SQL API(用 SQL 查 ES)
数据库·sql·elasticsearch
vHelios6 小时前
SQL不会写?不会找关联表?复杂SQL语句编写逻辑实现思路请查收✉
数据库·sql
xiancai_xianyu7 小时前
企业智能问数怎么落地,从自然语言到SQL那道坎有多难
数据库·人工智能·sql·text2sql·企业智能问数·agentrag·ai推理可视化
麻瓜code19 小时前
【Mysql】重新学一遍 SQL 执行顺序
数据库·sql
哥本哈士奇21 小时前
dbt+SQLServer构建数据仓库(10):macro 以及 data vault的应用实例
大数据·数据仓库·sqlserver
TELL5211 天前
帮我生成对应的sql 以及数据库-deepseek提示词
数据库·sql
今天AI了吗1 天前
从 LLM 到 Agent Skill:把 AI 底层概念串起来
数据库·人工智能·sql·深度学习·神经网络·算法·机器学习
陈卿诺语1 天前
MySQL错误-this is incompatible with sql_mode=only_full_group_by完美解决方案
sql·mysql·adb
步行cgn1 天前
MyBatis 动态 SQL 完全指南
sql·tomcat·mybatis
♩♬♪.1 天前
InnoAl SQL助手
数据库·sql