Example create temporary tables

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Exemple DDL Oracle
Contexte Tables temporaires de session (GLOBAL TEMPORARY TABLE)
Voir aussi Example create table · Example create tablespace

Une table temporaire Oracle (CREATE GLOBAL TEMPORARY TABLE) a une définition permanente et visible par toutes les sessions, mais des données privées à chaque session — deux sessions qui insèrent dans la même table temporaire ne se voient jamais mutuellement. Les données sont stockées dans le tablespace temporaire de l'utilisateur, pas dans un tablespace permanent, et ne génèrent pas (ou très peu) de redo.

Le comportement à la fin de chaque transaction est contrôlé par la clause ON COMMIT :

  • ON COMMIT DELETE ROWS (par défaut à partir d'Oracle8i si la clause est
 omise) : la table se vide automatiquement à chaque COMMIT — utile pour des
 données de travail purement intra-transactionnelles.
  • ON COMMIT PRESERVE ROWS : les données restent jusqu'à la fin de la
 session (ou un TRUNCATE explicite) — utile pour des données de travail
 qui doivent survivre à plusieurs transactions successives dans la même session.

Script

CONNECT scott/tiger

SET SERVEROUTPUT ON

-- Sans clause ON COMMIT : équivaut à ON COMMIT DELETE ROWS (comportement par défaut)
CREATE GLOBAL TEMPORARY TABLE mytemptab1 (
    id              NUMBER
  , name            VARCHAR2(500)
  , average_salary  NUMBER(15,2)
)
/

-- Vidée explicitement à chaque COMMIT
CREATE GLOBAL TEMPORARY TABLE mytemptab2 (
    id              NUMBER
  , name            VARCHAR2(500)
  , average_salary  NUMBER(15,2)
) ON COMMIT DELETE ROWS
/

-- Conserve les lignes jusqu'à la fin de la session
CREATE GLOBAL TEMPORARY TABLE mytemptab3 (
    id              NUMBER
  , name            VARCHAR2(500)
  , average_salary  NUMBER(15,2)
) ON COMMIT PRESERVE ROWS
/

scott/tiger est le compte de démonstration historique fourni par Oracle (schéma EMP/DEPT) — à remplacer par un compte applicatif réel en dehors d'un contexte de test.

Voir aussi