2015-01-08 2 views
2

У меня есть пример, как это,Выбор записи и удаления с помощью хранимой процедуры

Table1 
Table2 
Table21 
Table22 
Table23 

Table2 является ребенок таблица Table1

Я написал хранимую процедуру Delete_Table2, которая удаляет все дочерние таблицы, Table21, Table22, Table23 и Table2 также.

Теперь я создаю удалить хранимую процедуру для удаления записей из Table1 как:

Create PROC [dbo].[Delete_Table1] 
    @Table1Id int 
AS 
BEGIN 
    BEGIN TRAN delete_table1_trans 
     --Select Table2ID from Table2 where Table1Id = @Table1ID 
     --loop records and EXEC Delete_Table2 @param 

    COMMIT TRAN delete_table1_trans 
END 

Что будет лучшая идея? Я могу использовать курсор, но пытаюсь найти хорошую идею, например, вызывать функцию в select statement.

Select DELETE_Table2 (Table2Id) 
from Table2 
where Table1Id = 1 
+0

почему вы хотите, чтобы удалить так много таблиц? Что такое реальная история, как? Почему бы вам не поставить все под одним проком вместе с транзакцией? Вы можете получить лучшую ИДЕЮ только тогда, когда требование будет немного ясным. – KumarHarsh

ответ

0

Если таблицы установлены правильно ВКЛЮЧЕНЫ КАСКАДОМ DELETE сделают это за вас. То, что вы описываете, похоже на злоупотребление СУБД ИМО. Если ключевые отношения настолько тупые, я бы рекомендовал рассмотреть другой дизайн.

How do I use cascade delete with SQL Server?

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