|
|
|
новичок
      
участник
Last Login: 30.01.2002 2:40
Сообщ.: 1,
Visits: 12
|
|
Написал хранимую процедуру, с использованием курсора, которая обновляет записи дочерней таблицы, согласно данным полученным от главной. Написал триггер AFTER UPDATE FOR EACH ROW, кот. вызывает для каждой измененной строки ту самую процедуру. не работает. Oracle пишет, что в ходе выполнения триггера произошли ошибки: данные были обновлены, а процедура их не видит. Если запускать процедуру из SQL* Plus, то она корректно срабатывает, а если ее запускает триггер - то нет. Помогите разобраться в чем дело ???
|
|
|
|
|
новичок
      
участник
Last Login: 11.12.2001 21:43
Сообщ.: 3,
Visits: 34
|
|
| Посмотри, нет ли в тригере или в процедуре команды commit
|
|
|
|
|
новичок
      
участник
Last Login: 14.12.2001 15:18
Сообщ.: 1,
Visits: 12
|
|
Не мучай себя, в триггер commit никогда не запихнешь! Прочитай главу "Триггеры по изменяемым таблицам" в документации на Oracle (серые книжки). PL/SQL Ref. по-моему называется. Там все это есть. Ну суть там такая: 1. Создаешь свой пакет package... - Если его нет. 2. Создаешь в нем PL/SQL таблицу и переменную - счетчик строк в данной таблице. (прочитаешь, что такое PL/SQL таблица - поймешь - зачем переменная) 3. Заполняешь эту таблицу по TR_BEF_INS_FOR_EACH_ROW кидаешь туда id master table. 4. Читаешь из своей PL/SQL таблицы записи по одной и обрабатываешь записи в детальной таблице.
Удачи. Кстати, книжка эта очень хорошая - советую купить...
|
|
|
|