La clause
ON COMMIT PRESERVE ROWS
indique que les données seront privées à la session SQL courante (elles sont invisibles à l'extérieur de cette session) et elles seront automatiquement supprimées à la fin de cette session.
Note :
Il faut faire attention qu'il s'agit d'une session SQL et non une session applicative : lorsqu'un utilisateur se connecte à une application WEB, le conteneur WEB (Tomcat) lui crée une session applicative unique (si configuré ainsi) et cette session applicative n'a rien à avoir avec la session SQL créée par ORACLE.
Il y a deux scénarios à prendre en considération lorsqu'on crée une table temporaire par session :
-
Plusieurs sessions applicatives peuvent partager la même session SQL, et donc les insertions faites par un utilisateur d'une session applicative seront visibles à d'autres utilisateurs qui ont accès à la même session SQL.
-
Un utilisateur qui utilise une application WEB peut éventuellement être rediriger à des sessions SQL différentes pour chaque nouvelle requête http.