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

djv*_*djv 9 t-sql constraints sql-server-2008

我需要将列的数据类型从smallint更改为bigint(设计考虑不好,不要问).我运行TSQL

alter table dbo.Test alter column ProductionModeID bigint NULL
Run Code Online (Sandbox Code Playgroud)

但得到消息:

消息5074,级别16,状态1,行1对象'DF_Test_ProductionModeID'取决于列'ProductionModeID'.

消息4922,级别16,状态9,行1 ALTER TABLE ALTER COLUMN ProductionModeID失败,因为一个或多个对象访问此列.

DF_Test_ProductionModeID在dbo中找到了.测试>>约束.(我不知道是怎么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


课程地点:

Microsoft.SqlServer.Management.SqlManagerUI.DropObjects.DropAllObjects(Boolean stopOnError)中的Microsoft.SqlServer.Management.SqlManagerUI.DropObjects.DoDropObject(Int32 objectRowIndex)

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

SQL*_*ace 13

运行以下操作会发生什么?

ALTER table Test drop DF_Test_ProductionModeID
Run Code Online (Sandbox Code Playgroud)

另请参见如何命名默认约束以及如何在没有名称的情况下删除默认约束在SQL Server中获取更多信息

  • 除了那个UI充满了像这样的小问题之外@DanVerdolino?不.很久以前,我不得不自己学习DDL,而不是依赖UI中的指点和点击.作为奖励,DDL比源鼠标点击和菜单选择更容易存储在源代码管理中. (2认同)
  • 不确定你在SSMS中找到约束的位置所以无法发表评论,我通常会通过脚本完成所有工作,因为我知道会执行什么而不是SSMS voodoo (2认同)