viernes, 13 de mayo de 2011

Global Temporary Table

El comando "create global temporary tables" crea una tabla temporal para cada sesión. Eso significa que los datos no se comparten entre sesiones y
se eliminan al final de la misma.
Todos los usuarios que tengan permisos sobre la tabla podrán realizar operaciones DML sobre la misma.

Existen 2 tipos de datos temporales de acuerdo al tipo de tabla temporal:

- Datos con la duración de una transacción.
- Datos con la duración de una sesión.

Esto lo podemos hacer mediante las claúsulas:

- ON COMMIT DELETE ROWS: las filas que se insertan en la tabla son removidas de la misma ante un COMMIT o un ROLLBACK.
- ON COMMIT PRESERVE ROWS: las filas insertadas en la tabla permaneceran en la misma hasta que la sesion de usuario finalice.

A modo de ejemplificar esta explicación, veamos un pequeño ejemplo

SQL> create global temporary table prueba ( id int) on commit delete rows;

Table created.

SQL> insert into prueba values (1);

1 row created.

SQL> insert into prueba values (2);

1 row created.

SQL> insert into prueba values (3);

1 row created.

SQL> select * from prueba;

ID
---------
1
2
3


SQL> commit;

Commit complete.

SQL> select * from prueba;

no rows selected


/*****************/


SQL> create global temporary table prueba2 ( id int) on commit preserve rows;

Table created.

SQL> insert into prueba2 values (1);

1 row created.

SQL> insert into prueba2 values (2);

1 row created.

SQL> insert into prueba2 values (3);

1 row created.

SQL> select count(1) from prueba;

COUNT(*)
----------
153


SQL> commit;

Commit complete.

SQL> select * from prueba;

COUNT(*)
----------
153


Espero les haya servido.

Saludos!
Gondalf.

3 comentarios: