Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ERwin триггеры на каскадную стратегию [IB6.x]


Страницы:   1 2

July ©   (2006-09-06 12:22:00) 

Уважаемые мастера!
Подскажите, пожалуйста, как такое возможно - при генерации базы данных по схеме из ERwin, для каскадных стратегий на удаление из таблицы-родителя создаются триггеры на "после
удаления". И оно как-то работает! :) Т.е. получается, что запись, несмотря на наличие дочерних записей в другой таблице, все таки удаляется, а уже потом выполняется триггер и удаляются записи из дочерней таблицы. У меня это все не укладывается в голове, если бы я писала сама триггер для реализации каскадной стратегии, то он был бы на "до удаления".
Хотя я уже догадываюсь, что вероятно проверка ограничений целостности выполняется позднее срабатывания триггеров, но все никак не могу привыкнуть к этой мысли.
Посоветуйте, пожалуйста, что по этому вопросу почитать, чтобы отбросить последние сомнения :)


Val   (2006-09-07 14:07:00) [21]

>[12] Sergey13 ©  
я о том же - нет ли такой фичи и в иб уже?
>[13] Desdechado ©  
да, да, но описанное поведение интересно.


Desdechado   (2006-09-07 13:59:00) [22]

Sergey13 ©   (07.09.06 13:47) [12]
у нее не Оракл, а IB6

автору
не мудри с триггером, используй Desdechado ©   (06.09.06 13:29) [4]


Sergey13   (2006-09-07 13:47:00) [23]

Действительно странно.
У тебя случайно не отложенная проверка констрейнтов?
select CONSTRAINT_NAME, DEFERRED from dba_constraints
что показывает?


July   (2006-09-07 12:49:00) [24]


> Val ©   (06.09.06 17:15) [9]


ALTER TABLE RECEIPT ADD FOREIGN KEY (BUYCARDID) REFERENCES BUYCARD (BUYCARDID);

поле BUYCARDID not null


> Никакой трактат от огороде тригеров не заменит листинга
> самих тригеров. 8-)


CREATE TRIGGER TD_BUYCARD FOR BUYCARD
ACTIVE AFTER DELETEPOSITION 0
AS
 /* ERwin Builtin Mon Apr 04 12:41:20 2005 */
 /* DELETE trigger on BuyCard */
DECLARE VARIABLE numrows INTEGER;
BEGIN
   /* ERwin Builtin Mon Apr 04 12:41:20 2005 */
   /* BuyCard R/93 Receipt ON PARENT DELETE CASCADE */
   delete from Receipt
     where
       /*  %JoinFKPK(Receipt,OLD," = "," and") */
       Receipt.BuyCardID = OLD.BuyCardID;

......

END


Sergey13   (2006-09-07 08:21:00) [25]

> [8] July   (06.09.06 17:13)

Никакой трактат от огороде тригеров не заменит листинга самих тригеров. 8-)


Val   (2006-09-06 17:15:00) [26]

>?.. не поняла
выгрузите из базы ddl-текст внешнего ключа дочерней таблицы на родительскую, работа которого вас смущает.


July   (2006-09-06 17:13:00) [27]


> Мне тоже, но ты с огородом тригеров далеко и молчишь. 8-
> )


У меня доступ в сеть только эпизодически.
А что-то еще нужно добавить?
Вроде уже целый трактат накатала в первом посте :) .. о наболевшем :)))


Sergey13   (2006-09-06 14:06:00) [28]

> [6] July   (06.09.06 13:46)
> Хочется понять
Мне тоже, но ты с огородом тригеров далеко и молчишь. 8-)


July   (2006-09-06 13:46:00) [29]

Но даже если так, как же он все таки работает, этот огород?
Хочется понять, чтобы учитывать при написании собственных триггеров.


Sergey13   (2006-09-06 13:30:00) [30]

> [3] ANB ©   (06.09.06 13:27)
> Вообще то огород с триггерами для каскадного удаления не
> особо нужен.
Я бы даже сказал вреден, если можно решить через констрейнт. ИМХО.


Desdechado   (2006-09-06 13:29:00) [31]

FOREIGN KEY ON DELETE CASCADE


ANB   (2006-09-06 13:27:00) [32]


> July   (06.09.06 13:24) [2]

Вообще то огород с триггерами для каскадного удаления не особо нужен. Достаточно включить каскад в ограничениях по внешнему ключу.


July   (2006-09-06 13:24:00) [33]

?.. не поняла


Val   (2006-09-06 12:52:00) [34]

покажите ddl ограничения.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо