2017-07-20 11 views
1

主キーのデータタイプをvarcharからbigintに変更したいとします。他のテーブルの外部キーとして参照されている列の型を変更する方法はありますか?

次のコマンドを試しました。

ALTER TABLE dbo.Company 
ALTER COLUMN Id bigint 

ただし、この列は他の表の外部キーとして参照されるため、機能しません。

Sqlクエリを使用してテーブルのデータを失うことなくタイプを変更するにはどうすればよいですか?

+2

はその後、後で参照を再作成する列を変更する前に参照をドロップする必要があります。最高のトランザクションで行われます。最終的には、その列のデータを一時表にバッファーして、必要に応じて再作成する必要があります。 – Adwaenyth

答えて

0

これを達成するにはいくつかの手順があります。しかし、主なことは、まずキーを落とさなければならないということです。
まず(本当のあなたと、変更name_of_primary_key)主をドロップします。(ご希望に置き換えlength

ALTER TABLE dbo.Company DROP CONSTRAINT name_of_primary_key; 

変更データタイプ:

alter table table alter column foreign_key_column bigint(length) 

そして、(他のテーブルから外部キーをドロップすべてのテーブルのためにこれを行い、DBからあなたの本当の)と、二つの引数を置き換える:今すぐ

ALTER TABLE table DROP FOREIGN KEY foreign_key_column; 

、お茶NGE外部キー列のデータ・タイプは、(ご希望でlengthを置き換え):

alter table table alter column foreign_key_column bigint(length); 
+0

'bigint'には、指定された' length'がありません。 – SqlZim

関連する問題