尝试删除默认值,但收到服务器上不存在的消息

时间:2013-03-07 00:33:08

标签: sql-server-2008 tsql constraints

我需要将列的数据类型从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)

     
     

如需帮助,请点击:http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.1447.4+((KJ_RTM).100213-0103+)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.ObjectDoesNotExist&LinkId=20476

     
     

计划地点:

     

at Microsoft.SqlServer.Management.SqlManagerUI.DropObjects.DoDropObject(Int32 objectRowIndex)      在Microsoft.SqlServer.Management.SqlManagerUI.DropObjects.DropAllObjects(Boolean stopOnError)

所以我现在感到困惑,因为如果它不存在,那么它如何依赖于一列呢?

1 个答案:

答案 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了解更多信息