![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
trigger в Oracle [D6, Oracle, ]
Илья Лу. © (2002-01-22 13:43:00)Уважаемые господа.
Я недавно пересел с Interbase на Oracle и обнаружил для себя следующую неприятную вещь - невозможность в
trigger on TABLE before(after) update
делать update TABLE set... where ...
Наверное это сделано с целью избежания зацикливания, но я считал, что об этом могу позаботиться сам как разработчик.
Наверняка есть какие-то способы объехать это ограничение, но в doc-ах я этого не нашел, да и лучший способ узнать - спросить у того, кто знает. Так может кто-нибудь знает ?
Заранее благодарен.
Sly (2002-01-23 09:45:00) [1]Информация для размышления... есть такай штука jobs (DBMS_JOB). Так вот, в триггере их можно создавать, а выполняться они будут асинхронно, вне контекста этой транзакции.
Владислав (2002-01-22 14:25:00) [2]Для того, чтобы "объехать это ограничение", надо знать, что ты хочешь сделать.
Внук (2002-01-22 14:19:00) [3]В документации это называется mutating tables. В большинстве случаев ORACLE не позволяет изменять (читать) записи таблицы из триггера в момент выполнения DML-запроса. Навскидку могу предложить два пути решения проблемы - переделать триггер, чтобы он был не FOR EACH ROW, или создать триггер INSTEAD OF, только в этом случае все Update придется делать самому. Недостатки обоих способов очевидны.