web-dev-qa-db-ja.com

SQL 2005に外部キーが存在するかどうかを確認する方法

テーブルの列に外部キーが存在するかどうかを確認する簡単な方法はありますか?外部キーが存在しない場合にのみ追加するスクリプトを書いています。

39
Barbara Jackson

次のスクリプトを使用できます。

IF EXISTS (SELECT * 
           FROM sys.foreign_keys 
           WHERE object_id = OBJECT_ID(N'[dbo].[FK_NAME]') 
             AND parent_object_id = OBJECT_ID(N'[dbo].[MyTable]'))
BEGIN
    -- do stuff
END

これは、テーブルを展開して既存のFKを右クリックし、「DROP TO」としてスクリプトキーを選択すると、SQLから生成されたスクリプトを取得できます。

70
CodeLikeBeaker

ウフー!私はこれを行うために過去2日間を費やしました。

IF NOT EXISTS ( SELECT  name
                FROM    sys.foreign_keys
                WHERE   name = 'FK_Name' ) 
    ALTER TABLE table_name ADD CONSTRAINT FK_Name FOREIGN KEY (idcol) 
                           REFERENCES OtherTable(idcol)
9
ristonj