Есть ли простой способ проверить, существует ли внешний ключ для столбца в таблице? Я пишу script, который добавит внешний ключ, только если он не существует.
Способ проверки наличия внешнего ключа в SQL 2005
Ответ 1
Вы можете использовать этот script:
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 и выберите script как "DROP TO", а затем вы получите сгенерированный script из SQL.
Ответ 2
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)