Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Про триггер на каскадное удаление(продолжаю учица)  [new]
Леопольд
Guest
Тут запарочка небольшая...
Около 8 таблиц.
Первая самая главная остальные по убывающей.
Версия типа
------------------------------------
Create Trigger DeleteMain on Main
FOR DELETE
AS
Delete Main
From deleted, NotMain1 where deleted.[key]=link
-------------------------------------
для двух таблиц работает отлично, но если продалжать
------------------------------------
Create Trigger DeleteMain on Main
FOR DELETE
AS
Delete Main
From deleted, NotMain1 where deleted.[key]=link
Delete NotMain1
From deleted, NotMain2 where deleted.[key]=link
-------------------------------------
то уже не работает. Подскажите пжлста как написать триггер на удаление записей из 8 подчиненных таблиц
3 авг 04, 09:06    [853953]     Ответить | Цитировать Сообщить модератору
 Re: Про триггер на каскадное удаление(продолжаю учица)  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
скорее всего вы хотите сделать так:
Delete NotMain1
From deleted, NotMain1 where deleted.[key]=link
тогда на 2 таблицы:
Create Trigger DeleteMain on Main
FOR DELETE
AS
Delete NotMain1 
From deleted, NotMain1 where deleted.[key]=link
Delete NotMain2 
From deleted, NotMain2 where deleted.[key]=link


для спящего время бодрствования равносильно сну
3 авг 04, 09:12    [853965]     Ответить | Цитировать Сообщить модератору
 Re: Про триггер на каскадное удаление(продолжаю учица)  [new]
Леопольд
Guest
в вашем примере по моему вообще нет каскадности
---------------------------------------
Create Trigger DeleteMain on Main
FOR DELETE
AS
Delete NotMain1
From deleted, NotMain1 where deleted.[key]=link
Delete NotMain2
From deleted, NotMain2 where deleted.[key]=link
---------------------------------------
если notmain1 это главная таблица, то зачем она удаляет сама себя NotMAin1?

---------------------------------
Delete NotMain1
From deleted, NotMain1 where deleted.[key]=link
----------------------------------
3 авг 04, 09:26    [853992]     Ответить | Цитировать Сообщить модератору
 Re: Про триггер на каскадное удаление(продолжаю учица)  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
вы тогда определитесь какая главная... без если
потому что триггер у вас
автор
on Main



для спящего время бодрствования равносильно сну
3 авг 04, 09:29    [854002]     Ответить | Цитировать Сообщить модератору
 Re: Про триггер на каскадное удаление(продолжаю учица)  [new]
Леопольд
Guest
Так и есть, что главная таблица Main, а NotMain1, NotMAin2, NotMain3 это те в которых записи должны быть удалены при удалении из MAIN.
Но в вашем примере:
-------------------------------------
Create Trigger DeleteMain on Main
FOR DELETE
AS
Delete NotMain1
From deleted, (в этой части по идее должна быть NotMain2)NotMain1 where deleted.[key]=link
Delete NotMain2
From deleted, NotMain2 where deleted.[key]=link
------------------------------------
я не понимаю как будет происходить каскадное удаление.
3 авг 04, 09:36    [854018]     Ответить | Цитировать Сообщить модератору
 Re: Про триггер на каскадное удаление(продолжаю учица)  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
тогда вам надо с обратного начинать...

Create Trigger DeleteMain on Main
FOR DELETE
AS
Delete NotMain2 
From deleted, NotMain1, NotMain2 where deleted.[key]=link and link2=link2
Delete NotMain1 
From deleted, NotMain1 where deleted.[key]=link
надо примерно так...

для спящего время бодрствования равносильно сну
3 авг 04, 09:39    [854025]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить