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

Does anyone know how to change the datatype of a column in SQL 2008? This is the column I want to alter but when I try this query,

ALTER TABLE SystemDepartment ALTER COLUMN DepartmentCode smallint NOT NULL

I get the following error:

Msg 5074, Level 16, State 1, Line 1 The object 'PK_SystemDepartment' is dependent on column 'DepartmentCode'. Msg 4922, Level 16, State 9, Line 1 ALTER TABLE ALTER COLUMN DepartmentCode failed because one or more objects access this column.

My question is how to force my query to cope with it? and I also would like to set this column as primary key and identity

4

3 に答える 3

6

まず、主キー制約を削除する必要があります。

ALTER TABLE SystemDepartment DROP CONSTRAINT PK_SYSTEMDEPARTMENT

次に、その列を変更できるのはあなただけです。

既存の列を強制的に識別させることはできません。この場合、IDを使用して新しい列を追加して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 に答える