0

列のデータ型を変更したい。

列は他の 2 つのテーブルで外部キーとして参照されるため、他の 2 つのテーブルの外部キー制約を削除する必要があります。

また、現在のテーブルには、削除する必要があるインデックスがあります。

これはどのように行うことができますか?

4

1 に答える 1

1

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]')
于 2012-04-27T17:58:13.037 に答える