Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.18;
Скачать: [xml.tar.bz2];




Вниз

trigger в Oracle 


Илья Лу.   (2002-01-22 13:43) [0]

Уважаемые господа.

Я недавно пересел с Interbase на Oracle и обнаружил для себя следующую неприятную вещь - невозможность в

trigger on TABLE before(after) update

делать update TABLE set... where ...

Наверное это сделано с целью избежания зацикливания, но я считал, что об этом могу позаботиться сам как разработчик.
Наверняка есть какие-то способы объехать это ограничение, но в doc-ах я этого не нашел, да и лучший способ узнать - спросить у того, кто знает. Так может кто-нибудь знает ?
Заранее благодарен.



Внук   (2002-01-22 14:19) [1]

В документации это называется mutating tables. В большинстве случаев ORACLE не позволяет изменять (читать) записи таблицы из триггера в момент выполнения DML-запроса. Навскидку могу предложить два пути решения проблемы - переделать триггер, чтобы он был не FOR EACH ROW, или создать триггер INSTEAD OF, только в этом случае все Update придется делать самому. Недостатки обоих способов очевидны.



Владислав   (2002-01-22 14:25) [2]

Для того, чтобы "объехать это ограничение", надо знать, что ты хочешь сделать.



Sly   (2002-01-23 09:45) [3]

Информация для размышления... есть такай штука jobs (DBMS_JOB). Так вот, в триггере их можно создавать, а выполняться они будут асинхронно, вне контекста этой транзакции.




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.18;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.72 MB
Время: 0.029 c
1-57108           M@XIDROM              2002-02-01 15:32  2002.02.18  
Создание компонент


14-57218          Knyaz17               2001-12-13 10:38  2002.02.18  
Чем отличается MS-SQL 7.0 и MS-SQL 2000?


6-57161           Lana                  2001-11-27 02:34  2002.02.18  
Треб. совет!


3-57024           Андре                 2002-01-24 09:41  2002.02.18  
Отладка хранимых процедур.


4-57270           ALEX_RUUU             2001-12-19 01:13  2002.02.18  
WIN API