主キーのデータタイプをvarchar
からbigint
に変更したいとします。他のテーブルの外部キーとして参照されている列の型を変更する方法はありますか?
次のコマンドを試しました。
ALTER TABLE dbo.Company
ALTER COLUMN Id bigint
ただし、この列は他の表の外部キーとして参照されるため、機能しません。
Sqlクエリを使用してテーブルのデータを失うことなくタイプを変更するにはどうすればよいですか?
主キーのデータタイプをvarchar
からbigint
に変更したいとします。他のテーブルの外部キーとして参照されている列の型を変更する方法はありますか?
次のコマンドを試しました。
ALTER TABLE dbo.Company
ALTER COLUMN Id bigint
ただし、この列は他の表の外部キーとして参照されるため、機能しません。
Sqlクエリを使用してテーブルのデータを失うことなくタイプを変更するにはどうすればよいですか?
これを達成するにはいくつかの手順があります。しかし、主なことは、まずキーを落とさなければならないということです。
まず(本当のあなたと、変更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);
'bigint'には、指定された' length'がありません。 – SqlZim
はその後、後で参照を再作成する列を変更する前に参照をドロップする必要があります。最高のトランザクションで行われます。最終的には、その列のデータを一時表にバッファーして、必要に応じて再作成する必要があります。 – Adwaenyth