FirebirdSQL logo

AUTO COMMIT

Si l’option AUTO COMMIT est spécifiée, la transaction est automatiquement confirmée après l’exécution d’une instruction. Si une erreur se produit pendant l’exécution de l’instruction, la transaction sera annulée. Après confirmation ou annulation, la transaction continue d’être active, en conservant son identifiant.

Important

L’option AUTO COMMIT utilise une confirmation soft (COMMIT RETAIN) et un rollback soft (ROLLBACK RETAIN) de la transaction. La confirmation soft ne libère pas les ressources du serveur et retarde la collecte des déchets, ce qui peut avoir un impact négatif sur les performances.

RESERVING

La clause RESERVING de l’instruction SET TRANSACTION réserve les tables spécifiées dans la liste.La réservation interdit aux autres transactions d’apporter des modifications à ces tables ou (sous certains paramètres de caractéristique de la phrase de réservation) même de lire les données de ces tables pendant que cette transaction est en cours d’exécution.Alternativement, dans cette proposition, vous pouvez spécifier une liste de tables qui peuvent être modifiées par des transactions concurrentes même si une transaction de niveau d’isolation SNAPSHOT TABLE STABILITY est lancée.

Vous pouvez spécifier un nombre arbitraire de tables réservées de la base de données utilisée dans une seule phrase de redondance.

Si l’un des mots-clés SHARED ou PROTECTED est omis, SHARED est supposé.Si la phrase entière FOR est omise, FOR SHARED READ est supposé.Les options de mise en œuvre des réservations de tables par leur nom ne sont pas évidentes.

Table 1. Compatibilité des différents verrouillages

 

SHARED READ

SHARED WRITE

PROTECTED READ

PROTECTED WRITE

SHARED READ

oui

oui

oui

oui

SHARED WRITE

oui

oui

non

non

PROTECTED READ

oui

non

oui

non

PROTECTED WRITE

oui

non

non

non

Pour une transaction s’exécutant en mode d’isolation SNAPSHOT pour les tables spécifiées dans la phrase RESERVING, les comportements suivants sont autorisés dans les transactions concurrentes en fonction de leur niveau d’isolation avec différentes méthodes de réservation :

  • SHARED READ — n’a aucun effet sur l’exécution de transactions concurrentes ;

  • SHARED WRITE — n’a aucun effet sur le comportement des transactions parallèles avec les niveaux d’isolation SNAPSHOT et READ COMMITTED ; pour les transactions avec le niveau d’isolation SNAPSHOT TABLE STABILITY, il interdit non seulement l’écriture mais aussi la lecture des données des tables spécifiées ;

  • PROTECTED READ - permet uniquement de lire les données des tables réservées pour les transactions simultanées avec n’importe quel niveau d’isolation ; toute tentative de modification entraîne l’exclusion de la base de données ;

  • PROTECTED WRITE — pour les transactions parallèles avec les niveaux d’isolation SNAPSHOT et READ COMMITTED, il interdit l’écriture dans les tables spécifiées ; pour les transactions avec le niveau d’isolation SNAPSHOT TABLE STABILITY, il interdit également la lecture des données de la table de réservation.

Pour une transaction démarrée dans le mode d’isolation SNAPSHOT TABLE STABILITY pour les tables spécifiées dans la phrase RESERVING, dans les transactions parallèles, selon leur niveau d’isolation, les variantes de comportement suivantes sont acceptables aux différentes méthodes de leur réservation :

  • SHARED READ — permet à toutes les transactions concurrentes, quel que soit leur niveau d’isolation, non seulement de lire mais aussi d’effectuer des modifications dans les tables réservées (si la transaction concurrente a le mode d’accès READ WRITE) ;

  • SHARED WRITE — pour toutes les transactions concurrentes avec le niveau d’accès READ WRITE et avec les niveaux d’isolation SNAPSHOT et READ COMMITTED, il permet de lire les données des tables et d’écrire les données dans les tables spécifiées ; pour les transactions avec le niveau d’isolation SNAPSHOT TABLE STABILITY, il interdit non seulement d’écrire mais aussi de lire les données des tables spécifiées ;

  • PROTECTED READ - permet de lire uniquement les données des tables réservées pour les transactions parallèles avec n’importe quel niveau d’isolation ;

  • PROTECTED WRITE — pour les transactions parallèles avec le niveau d’isolation SNAPSHOT et READ COMMITTED, il interdit l’écriture dans les tables spécifiées ; pour les transactions avec le niveau d’isolation SNAPSHOT TABLE STABILITY, il interdit également la lecture des données des tables de réservation.

Pour une transaction démarrée dans le mode d’isolation READ COMMITTED pour les tables spécifiées dans la phrase RESERVING, dans les transactions parallèles, en fonction de leur niveau d’isolation, les variantes de comportement suivantes sont acceptables aux différentes méthodes de leur réservation :

  • SHARED READ — permet à toutes les transactions concurrentes, quel que soit leur niveau d’isolation, non seulement de lire mais aussi d’effectuer toute modification dans les tables réservées (au niveau d’accès READ WRITE) ;

  • SHARED WRITE — pour toutes les transactions avec le niveau d’accès READ WRITE et avec les niveaux d’isolation SNAPSHOT et READ COMMITTED, il autorise la lecture et l’écriture de données dans les tables spécifiées ; pour les transactions avec le niveau d’isolation SNAPSHOT TABLE STABILITY, il interdit non seulement l’écriture mais aussi la lecture de données depuis les tables spécifiées ;

  • PROTECTED READ — permet seulement de lire les données des tables réservées pour les transactions parallèles avec n’importe quel niveau d’isolation ;

  • PROTECTED WRITE — pour les transactions parallèles avec les niveaux d’isolation SNAPSHOT et READ COMMITTED, permet uniquement la lecture des données et interdit l’écriture dans les tables spécifiées dans cette liste ; pour les transactions avec le niveau d’isolation SNAPSHOT TABLE STABILITY, il interdit non seulement la modification des données mais aussi la lecture des données des tables de réservation.

Tip

La proposition USING peut être utilisée pour économiser les ressources du système en limitant le nombre de bases de données auxquelles une transaction peut accéder. Disponible uniquement dans Embedded SQL.

Voir aussi :

COMMIT, ROLLBACK.