2014-04-28 2 views
0

У меня есть 30 таблиц в базе данных и все связаны друг с другом с помощью отношений первичного и внешнего ключей. Проблема в том, что когда я пытаюсь удалить любую запись с помощью хранимой процедуры, она не удаляется из-за отношения первичного/внешнего ключа. Что делать, чтобы удалить таблицы? Слишком много таблиц взаимосвязаны.Не удается удалить таблицы с отношениями первичного/внешнего ключа

ALTER PROCEDURE [dbo].[DeleteRegions_SP] 

    @RegionID smallint 

AS 
BEGIN 

    Begin Try 

    Delete from Regions where RegionID = @RegionID 
    End Try 
    Begin Catch 
    Select ERROR_MESSAGE() as ErrorMessage 
    End Catch 
END 

ответ

0

Есть три способа SQL обрабатывает это вполне нормальная ситуация:

ON DELETE CASCADE 

который удалит записи, зависящие от того, который вы хотите удалить.

ON DELETE SET NULL 

который установит поле FK в NULL

и

ON DELETE RESTRICT 

который является dafault вы ударился.

TSQL также может сделать

ON DELETE SET DEFAULT 

, который также может быть полезным.

У вас нет ни одного решения (особенно CASCADE)!

Вам нужно будет решить для каждого FK, что будет правильным предложением!

дизайн базы данных искусство ..

Этот ответ об удалении записей не таблиц; если вы действительно хотите удалить таблицы, вы должны сначала поднять отношения FK, которые зависят от них.

0

Вы должны удалить таблицы, которые имеют Foreign Key, прежде чем можно удалить таблицу с первичным ключом

Смежные вопросы