| 
 | 
| 
 
Как откатить изменения, сделанные  несколькими вложенными триггерах? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Моя большая и по-видимому не разрешимая проблема в следующем: есть родительская таблица, на которой проводиться логическое удаление, то есть есть поле dateofarchive котрое апдейтиться ненудевым значением, в случае если запись "удалена", у родительской таблицы есть много дочерних, на которых тоже надо обновить поле dateofarchive у соответствующих дочерних записей, ну чтобы ссылочная целостность сохранилась. проблема в том что у некоторых дочерних таблиц существуют свои тригера на BEFORE UPDATE котррый поддерживают некоторые бизнес-правила, например нельзя удалить (в нашем случае проапдейтить поле dateofarchive), если дочерняя запись последняя. И вот этот самый триггер конфликтует с родительским триггером, который пытается проапдейтить также все дочерние записи. Мы определили два пути чтобы побороть эту проблему 1) Как-то определить когда дочерний триггер вызван UPDATE выражением в родительском и тогда в процедуре триггера разрешать удаление дочерней записи Вопрос: как определить что дочерний триггер вызван из родительского? параметры в триггеры не передаются :( Enable/disable тригеру делать в нашем случае нельзя 2) если для родительского триггера использовать AFTER UPDATE, то в дочернем можно проверить, что родитель уже удален и тоже разрешить удаление дочернего, но в это случае проблема как сделать откат в случае сбоя? В литературе нигде не описано, но по-видимому триггеры не разрешают управление транзакциями, и каждый триггерэто отдельная транзакция. Поэтому если сбой произойдет в одном из дочерних триггеров вызванных родительским, то невозможно сделать откат всех изменений и в родительской таблице, и во всех остальных дочерних. Если у кого-то будут какие-либо идеи, пожалуйста, пишите. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 24.04.2003, 18:40 | 
  
  
  
   | 
||
| 
 
Как откатить изменения, сделанные  несколькими вложенными триггерах? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Хмык, похоже никто не сталкивался, пиши в рассылку PGSQL , там ребята толковые, помогут, но к сожалению только не английском, хотя пару "бизонов" там есть из России и Прибалтики. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.04.2003, 22:16 | 
  
  
  
   | 
||
| 
 | 

start [/forum/topic.php?fid=53&gotonew=1&tid=2008211]:  | 
    0ms | 
get settings:  | 
    10ms | 
get forum list:  | 
    13ms | 
check forum access:  | 
    3ms | 
check topic access:  | 
    3ms | 
track hit:  | 
    35ms | 
get topic data:  | 
    11ms | 
get first new msg:  | 
    7ms | 
get forum data:  | 
    2ms | 
get page messages:  | 
    42ms | 
get tp. blocked users:  | 
    2ms | 
| others: | 244ms | 
| total: | 372ms | 

| 0 / 0 | 

На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даете согласие с использованием данных технологий.