All errors › ORA errors
ORA-04091: Table is mutating, trigger/function may not see it
What it means
A row-level trigger (or a function called from DML) reads or modifies the table that the triggering statement is changing.
How to fix it
Use a compound trigger: collect the keys in the row-level section and do the work in AFTER STATEMENT. Or move the logic into the calling procedure. Avoid PRAGMA AUTONOMOUS_TRANSACTION as a workaround: the autonomous transaction cannot see the uncommitted changes of the triggering statement, so it works on stale data.
Catch it before it runs
ORA Error Helper
Explains ORA-/PLS- codes inside JetBrains IDEs and DataGrip. PL/SQL Lint
Flags risky PL/SQL patterns while you type. Oracle Plan Reader
Reads execution plans and points at the slow step. PL/SQL in Practice
Kindle book with practical PL/SQL for working developers.
Explains ORA-/PLS- codes inside JetBrains IDEs and DataGrip. PL/SQL Lint
Flags risky PL/SQL patterns while you type. Oracle Plan Reader
Reads execution plans and points at the slow step. PL/SQL in Practice
Kindle book with practical PL/SQL for working developers.
Nearby errors
Updated 2026-11-12.