更改列的数据类型并在SQL中将列设置为标识

Bon*_*Kun 1 sql-server alter

----------------------------------------------
DepartmentCode  varchar(30) AllowNulls
----------------------------------------------
Run Code Online (Sandbox Code Playgroud)

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

ALTER TABLE SystemDepartment ALTER COLUMN DepartmentCode smallint NOT NULL
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

消息5074,级别16,状态1,行1对象'PK_SystemDepartment'依赖于列'DepartmentCode'.消息4922,级别16,状态9,行1 ALTER TABLE ALTER COLUMN部门代码失败,因为一个或多个对象访问此列.

我的问题是如何强制我的查询来应对它?我也想将此列设置为主键和标识

小智 6

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

ALTER TABLE SystemDepartment DROP CONSTRAINT PK_SYSTEMDEPARTMENT
Run Code Online (Sandbox Code Playgroud)

然后只有你可以改变该列.

您无法强制现有列进行标识.在这种情况下,您需要添加带有标识的新列,然后执行sp_rename旧名称.