列のデータ型を変更したい。
列は他の 2 つのテーブルで外部キーとして参照されるため、他の 2 つのテーブルの外部キー制約を削除する必要があります。
また、現在のテーブルには、削除する必要があるインデックスがあります。
これはどのように行うことができますか?
列のデータ型を変更したい。
列は他の 2 つのテーブルで外部キーとして参照されるため、他の 2 つのテーブルの外部キー制約を削除する必要があります。
また、現在のテーブルには、削除する必要があるインデックスがあります。
これはどのように行うことができますか?
sys
テーブルから取得できるインデックスと外部キー名を知っている必要があります。それらを削除する構文は次のとおりです。
外部キー
IF EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[foreign_key_index_name]') AND parent_object_id = OBJECT_ID(N'[dbo].[tablename]'))
ALTER TABLE [dbo].[tablename] DROP CONSTRAINT [foreign_key_index_name]
索引
IF EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[tablename]') AND name = N'index_name')
DROP INDEX [index_name] ON [dbo].[tablename] WITH ( ONLINE = OFF )
この情報はBOLでも入手できます。
これらのクエリを使用して、インデックス名と外部キー名を見つけることができます。
select * from sys.indexes where object_id = object_id(N'[dbo].[tablename]')
select * from sys.foreign_keys where parent_object_id = object_id(N'[dbo].[tablename]')