2009-05-15 9 views
35

テーブルの列に外部キーが存在するかどうかを確認する簡単な方法はありますか?私は存在しない場合にのみ外部キーを追加するスクリプトを書いています。既存のFKにテーブルと右クリックを拡張し、「DROP TO」としてスクリプトキーを選択した場合、これを行うことができ、その後、あなたが生成されますSQL 2005に外部キーが存在するかどうかを確認する方法

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 

答えて

65

このスクリプトを使用することができますSQLからのスクリプト。

+0

このスクリプトは素晴らしい機能を備えています。私はあなたがメニューからそのようなものを脚本することができるとは信じられません。助けをしてくれてありがとう。 –

+5

あなたはSQLの中の何かをちょうど右クリックするだけで、あなたのためのスクリプト、テーブル、ストアドプロシージャー、外部キーなどを生成できます。管理スタジオは、あなたができるクールな機能のいくつかを学ぶと、あなたの友人です。 – CodeLikeBeaker

+0

このメソッドは、外部キーのデフォルト名が使用されている場合にのみ機能します。異なる名前付け規則に従う可能性のある他の人が作成したデータベースで作業している場合、特に前提に基づいて名前を処理することは信頼できません。 外部キーの名前を確認するのではなく、特定の列が別のテーブルの外部キーであるかどうかを確認する方法はありますか? –

7

Woo-hoo!私はちょうどこれをやって過去二日間過ごした。

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)