1
----------------------------------------------
DepartmentCode  varchar(30) AllowNulls
----------------------------------------------

有谁知道如何更改 SQL 2008 中列的数据类型?这是我要更改的列,但是当我尝试此查询时,

ALTER TABLE SystemDepartment ALTER COLUMN DepartmentCode smallint NOT NULL

我收到以下错误:

消息 5074,级别 16,状态 1,第 1 行对象“PK_SystemDepartment”依赖于列“DepartmentCode”。消息 4922,级别 16,状态 9,第 1 行 ALTER TABLE ALTER COLUMN DepartmentCode 失败,因为一个或多个对象访问此列。

我的问题是如何强制我的查询来处理它?我也想将此列设置为主键和身份

4

3 回答 3

6

您首先需要删除主键约束。

ALTER TABLE SystemDepartment DROP CONSTRAINT PK_SYSTEMDEPARTMENT

然后只有您可以更改该列。

您不能强制现有列标识。在这种情况下,您需要添加具有标识的新列,然后sp_rename对旧名称执行操作。

于 2012-09-03T08:39:58.953 回答
0

如果您的约束是针对用户类型的,那么不要忘记查看是否有Default Constraint,通常类似于DF__TableName__ColumnName__6BAEFA67,如果有,那么您将需要删除默认约束,如下所示:

ALTER TABLE TableName DROP CONSTRAINT [DF__TableName__ColumnName__6BAEFA67]

有关更多信息,请参阅出色的 Aaron Bertrant对此答案的评论。

于 2013-03-16T06:58:59.143 回答
-1

试试这个 ,

正如您所说,您遇到主键约束错误,首先您必须删除主键并使用以下查询,

    ALTER TABLE SystemDepartment MODIFY DepartmentCode int(3)

谢谢,

文卡特。

于 2012-09-03T09:08:44.107 回答