Tableaux horaires mondiaux (GTT)
Les tables temporaires globales (ci-après dénommées GTT
) sont des métadonnées permanentes tout comme les tables régulières, mais les données qu’elles contiennent sont limitées dans le temps d’existence à une transaction (valeur par défaut) ou à une connexion à la base de données.Chaque transaction ou connexion possède sa propre instance de données GTT, isolée de toutes les autres.Les instances ne sont créées que si l’on accède à la GTT, et les données qu’elles contiennent sont supprimées lorsque la transaction est terminée ou déconnectée de la base de données.Les métadonnées des GTT peuvent être modifiées ou supprimées à l’aide des instructions ALTER TABLE
et DROP TABLE
.
CREATE GLOBAL TEMPORARY TABLE name (<column_def> [, {<column_def> | <table_constraint>} ...]) [ON COMMIT {DELETE | PRESERVE} ROWS] [SQL SECURITY {DEFINER | INVOKER}]
Si la phrase optionnelle ON COMMIT DELETE ROWS
est spécifiée dans l’instruction de création de table temporaire globale, une GTT de niveau transactionnel (par défaut) sera créée. Si la phrase ON COMMIT PRESERVE ROWS
est spécifiée — un niveau de connexion à la base de données GTT sera créé.
La phrase EXTERNAL [FILE]
ne peut pas être utilisée pour une table temporaire globale.
Note
|
Les instructions |
Restrictions GTT
Les GTT possèdent tous les attributs des tables ordinaires (clés, clés étrangères, index et déclencheurs), mais présentent un certain nombre de limitations :
-
Les tableaux GTT et réguliers ne peuvent pas se référer les uns aux autres ;
-
Les GTT de niveau connexion ("`PRESERVE ROWS'") ne peuvent pas faire référence aux GTT de niveau transaction ("`DELETE ROWS'") ;
-
Les restrictions de domaine ne peuvent pas faire référence à un GTT ;
-
La destruction d’une instance GTT à la fin de son cycle de vie ne déclenche pas de déclencheurs pré/post suppression.
Tip
|
Dans une base de données existante, il n’est pas toujours facile de distinguer une table ordinaire d’une TTG, ou une TTG au niveau de la transaction d’une TTG au niveau de la connexion.Utilisez la requête suivante pour identifier le type de table :
Utilisez une requête pour afficher des informations sur les types de toutes les tables :
Le champ RDB$TYPE_NAME indiquera PERSISTENT pour la table régulière, VIEW pour la vue, GLOBAL_TEMPORARY_PRESERVE pour la GTT de niveau connexion et GLOBAL_TEMPORARY_DELETE pour la GTT de niveau transaction. |