Oracle: Mutating table trigger error megelőzése

Adatbázisokkal kapcsolatos cikkek / Oracle (1704 katt)

Ha Oracle-ben egy olyan triggert készítünk (például adatellenőrzés céljából), amely az éppen változtatás alatt álló táblát próbálja meg lekérdezni, akkor az ORA-04091: ... tábla változtatás alatt áll, trigger/funkció számára nem látható hibaüzenetet kapjuk.

Ezt a problémát - legalábbis részlegesen - úgy lehet megoldani, ha a trigger declare szekciójába beírjuk az alábbiakat (azaz autonóm tranzakciót használunk):

declare

pragma autonomous_transaction;



A trigger ebben az esetben a táblából a már véglegesített (commit) adatokat fogja látni. Más szóval azokat a változtatásokat nem látjuk, amelyeket a triggert kiváltó tranzakció okozott.

A megoldásra ebben a könyvben találtam rá:

Steven Feuerstein: Oracle PL/SQL Programming, 454.o-461.o.

Előző oldal Kapitány