IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)

PREPARE TRANSACTION

PREPARE TRANSACTION — pr�pare la transaction en cours pour une validation en deux phases

Synopsis

PREPARE TRANSACTION id_transaction

Description

PREPARE TRANSACTION pr�pare la transaction courante en vue d'une validation en deux phases. À la suite de cette commande, la transaction n'est plus associ�e � la session courante ; au lieu de cela, son �tat est enti�rement stock� sur disque. La probabilit� est donc forte qu'elle puisse �tre valid�e avec succ�s, y compris en cas d'arr�t brutal de la base de donn�es avant la demande de validation.

Une fois pr�par�e, une transaction peut �tre valid�e ou annul�e ult�rieurement par, respectivement, COMMIT PREPARED(7) et ROLLBACK PREPARED(7). Ces commandes peuvent �tre ex�cut�es � partir d'une session quelconque. Il n'est pas n�cessaire de le faire depuis celle qui a ex�cut� la transaction initiale.

Du point de vue de la session l'initiant, PREPARE TRANSACTION diff�re peu de la commande ROLLBACK : apr�s son ex�cution, il n'y a plus de transaction active et les effets de la transaction pr�par�e ne sont plus visibles. (Les effets redeviendront visibles si la transaction est valid�e.)

Si la commande PREPARE TRANSACTION �choue, quelqu'en soit la raison, elle devient une commande ROLLBACK : la transaction courante est annul�e.

Param�tres

id_transaction

Un identifiant arbitraire de la transaction pour les commandes COMMIT PREPARED et ROLLBACK PREPARED. L'identifiant, obligatoirement de type cha�ne litt�rale, doit �tre d'une longueur inf�rieure � 200 octets. Il ne peut �tre identique � un autre identifiant de transaction pr�par�e.

Notes

PREPARE TRANSACTION n'a pas pour but d'�tre utilis� dans des applications ou des sessions interactives. Son but est de permettre � un gestionnaire de transactions externe pour r�aliser des transactions globales atomiques au travers de plusieurs bases de donn�es ou de ressources transactionnelles. Sauf si vous �crivez un gestionnaire de transactions, vous ne devriez probablement pas utiliser PREPARE TRANSACTION.

Cette commande doit �tre utilis�e dans un bloc de transaction, initi� par BEGIN(7).

Il n'est actuellement pas possible de pr�parer (PREPARE) une transaction qui a ex�cut� des op�rations impliquant des tables temporaires ou qui a cr�� des curseurs WITH HOLD, ou qui a ex�cut� LISTEN ou UNLISTEN. Ces fonctionnalit�s sont trop int�gr�es � la session en cours pour avoir la moindre utilit� dans une transaction pr�par�e.

Si la transaction a modifi� des param�tres en ex�cution � l'aide de la commande SET (sans l'option LOCAL), ces effets persistent au-del� du PREPARE TRANSACTION et ne seront pas affect�s par les commandes COMMIT PREPARED et ROLLBACK PREPARED. Du coup, dans ce cas, PREPARE TRANSACTION agit plus comme COMMIT que comme ROLLBACK.

Toutes les transactions pr�par�es disponibles sont list�es dans la vue syst�me pg_prepared_xacts.

[Attention]

Attention

Il est pr�f�rable de ne pas conserver trop longtemps des transactions pr�par�es dans cet �tat ; cela compromet, par exemple, les possibilit�s de r�cup�ration de l'espace par VACUUM, et dans certains cas extr�mes peut causer l'arr�t de la base de donn�es pour emp�cher une r�utilisation d'identifiants de transactions (voir Section 23.1.5, � Éviter les cycles des identifiants de transactions �). Il ne faut pas oublier non plus qu'une telle transaction maintient les verrous qu'elle a pos�. L'usage principal de cette fonctionnalit� consiste � valider ou annuler une transaction pr�par�e d�s lors qu'un gestionnaire de transactions externe a pu s'assurer que les autres bases de donn�es sont pr�par�es � la validation.

Si vous n'avez pas configur� un gestionnaire de transactions externe pour g�rer les transactions pr�par�es et vous assurer qu'elles sont ferm�es rapidement, il est pr�f�rable de d�sactiver la fonctionnalit� des transactions pr�par�es en configurant max_prepared_transactions � z�ro. Ceci emp�chera toute cr�ation accidentelle de transactions pr�par�es qui pourraient alors �tre oubli�es, ce qui finira par causer des probl�mes.

Exemples

Pr�parer la transaction en cours pour une validation en deux phases en utilisant foobar comme identifiant de transaction :

PREPARE TRANSACTION 'foobar';

Compatibilit�

PREPARE TRANSACTION est une extension PostgreSQL™. Elle est con�ue pour �tre utilis�e par des syst�mes ext�rieurs de gestion des transactions. Certains de ceux-l� sont couverts par des standards (tels que X/Open XA), mais la partie SQL de ces syst�mes n'est pas standardis�e.