Чтобы добавить «Каскадное удаление» к существующему внешнему ключу в SQL Server Management Studio:
Сначала выберите свой внешний ключ и откройте его «DROP and Create To ..» в новом окне запроса.
Затем просто добавьте ON DELETE CASCADE
к команде ADD CONSTRAINT
:
И нажмите кнопку «Выполнить», чтобы выполнить этот запрос.
Кстати, чтобы получить список ваших внешних ключей и увидеть, в каких из них включена функция «Каскадное удаление», вы можете запустить этот скрипт:
SELECT
OBJECT_NAME(f.parent_object_id) AS 'Table name',
COL_NAME(fc.parent_object_id,fc.parent_column_id) AS 'Field name',
delete_referential_action_desc AS 'On Delete'
FROM sys.foreign_keys AS f,
sys.foreign_key_columns AS fc,
sys.tables t
WHERE f.OBJECT_ID = fc.constraint_object_id
AND t.OBJECT_ID = fc.referenced_object_id
ORDER BY 1
И если вы когда-нибудь обнаружите, что не можете DROP
конкретную таблицу из-за ограничения внешнего ключа, но не можете определить, какой FK вызывает проблему, вы можете выполнить эту команду:
sp_help 'TableName'
SQL в этой статье перечисляет все FK, которые ссылаются на конкретную таблицу.
Надеюсь, все это поможет.
Извинения за длинный палец. Я просто пытался сделать точку.