9

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

alter table dbo.Test alter column ProductionModeID bigint NULL

但得到消息:

消息 5074,级别 16,状态 1,第 1 行对象“DF_Test_ProductionModeID”依赖于列“ProductionModeID”。

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

DF_Test_ProductionModeID在 dbo.Test >> 约束中找到了。(我不知道是如何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.DoDropObject(Int32 objectRowIndex) 在 Microsoft.SqlServer.Management.SqlManagerUI.DropObjects.DropAllObjects(Boolean stopOnError)

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

4

1 回答 1

13

运行以下命令时会发生什么?

ALTER table Test drop DF_Test_ProductionModeID

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

于 2013-03-07T00:40:18.347 回答