Способ проверить, существует ли внешний ключ в SQL 2005 - PullRequest
38 голосов
/ 15 мая 2009

Есть ли простой способ проверить, существует ли внешний столбец для столбца в таблице? Я пишу сценарий, который добавит внешний ключ, только если он не существует.

Ответы [ 2 ]

69 голосов
/ 15 мая 2009

Вы можете использовать этот скрипт:

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.

8 голосов
/ 15 мая 2009

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)
...