Un TRIGGER ne peut pas gérer une transaction ou alors il faut utiliser PRAGMA AUTONOMOUS_TRANSACTION ce qui définira une transaction autonome, exemple :

Que l'insertion dans la table categorie aboutisse ou non l'insertion dans la table message se fera.

Les niveaux d'isolation

Les accès concurrents sont gérés par les niveaux d'isolation définis par la norme SQL92.

Du plus permissif au plus restrictif ce sont :

READ UNCOMMITED : les autres transactions peuvent lire des données qui ont été changées, mais pas encore validées.

READ COMMITED : les autres transactions ne peuvent lire que les données qui ont été validées.

REPEATABLE READ : plusieurs lectures des mêmes données par une même transaction donnent le même résultat.

SERIALIZABLE : une transaction ne voit que les données validées avant son démarrage plus les modifications qu'elle effectue.

Implémentation Oracle

Oracle implémente READ COMMITTED (valeur par défaut), SERIALIZABLE et READ ONLY (spécifique à Oracle).