我需要将列的数据类型从smallint更改为bigint(设计考虑不周,不要问)。我运行TSQL
alter table dbo.Test alter column ProductionModeID bigint NULL
但是得到消息:
Msg 5074,Level 16,State 1,Line 1 对象'DF_Test_ProductionModeID'依赖于列'ProductionModeID'。
Msg 4922,Level 16,State 9,Line 1 ALTER TABLE ALTER COLUMN ProductionModeID失败,因为一个或多个对象访问此列。
我在dbo.Test>>中找到DF_Test_ProductionModeID
约束。 (我不知道DF_Test_ProductionModeID
是如何创建的,我也不相信我需要它存在)。我按Delete键,选择OK按钮,然后收到以下消息:
===================================
服务器上不存在默认的“DF_Test_ProductionModeID”。 (SqlManagerUI)
计划地点:
at Microsoft.SqlServer.Management.SqlManagerUI.DropObjects.DoDropObject(Int32 objectRowIndex) 在Microsoft.SqlServer.Management.SqlManagerUI.DropObjects.DropAllObjects(Boolean stopOnError)
所以我现在感到困惑,因为如果它不存在,那么它如何依赖于一列呢?
答案 0 :(得分:13)
运行以下内容会发生什么?
ALTER table Test drop DF_Test_ProductionModeID
另见How To Name Default Constraints And How To Drop Default Constraint Without A Name In SQL Server了解更多信息