A instru????o DECLARE GLOBAL TEMPORARY TABLE define uma tabela tempor??ria para a conex??o corrente. Estas tabelas n??o residem nos cat??logos do sistema, e n??o s??o persistentes. As tabelas tempor??rias existem somente durante a conex??o em que foram declaradas, n??o podendo ser referenciadas de fora da conex??o. Ao fechar a conex??o, as linhas da tabela s??o exclu??das e a descri????o em-mem??ria da tabela tempor??ria ?? removida.
DECLARE GLOBAL TEMPORARY TABLE nome-da-tabela { defini????o-da-coluna [ , defini????o-da-coluna ] * } [ ON COMMIT {DELETE | PRESERVE} ROWS ] NOT LOGGED [ON ROLLBACK DELETE ROWS]
O nome da tabela tempor??ria. Se for especificado um nome-do-esquema diferente de SESSION, ocorrer?? um erro (SQLState 428EK). Se o nome-do-esquema n??o for especificado, ser?? atribu??do SESSION. V??rias conex??es podem definir tabelas tempor??rias globais declaradas com o mesmo nome, porque cada conex??o possui seu pr??prio descritor de tabela ??nico.
A utiliza????o de SESSION como nome do esquema de uma tabela f??sica n??o gera erro, mas ?? desestimulado. O nome de esquema SESSION deve ser reservado para o esquema de tabelas tempor??rias.
Para obter mais informa????es sobre a defini????o-da-coluna deve ser consultada defini????o-da-coluna em CREATE TABLE. A instru????o DECLARE GLOBAL TEMPORARY TABLE n??o permite especifica????o-de-coluna-gerada na defini????o-da-coluna.
Especifica a a????o a ser executada na tabela tempor??ria global quando ?? realizada uma opera????o de COMMIT.
Todas as linhas da tabela ser??o exclu??das, se n??o houver nenhum cursor com possibilidade de HOLD aberto na tabela. Este ?? o valor padr??o para ON COMMIT. Se for especificado ON ROLLBACK DELETE ROWS, ser??o exclu??das todas as linhas da tabela somente se a tabela tempor??ria tiver sido utilizada. ON COMMIT DELETE ROWS exclui as linhas da tabela, mesmo que a tabela n??o tenha sido utilizada (se a tabela n??o possuir nenhum cursor com possibilidade de HOLD aberto na mesma).
As linhas da tabela s??o preservadas.
Especifica a a????o realizada na tabela tempor??ria global quando uma opera????o de desfazer ?? realizada. Quando ?? realizada uma opera????o de ROLLBACK (ou ROLLBACK TO SAVEPOINT), se a tabela foi criada na unidade de trabalho (ou no ponto de salvamento), a tabela ser?? removida. Se a tabela foi removida na unidade de trabalho (ou no ponto de salvamento), a tabela ser?? restaurada sem nenhuma linha.
Este ?? o valor padr??o para NOT LOGGED. NOT LOGGED [ON ROLLBACK DELETE ROWS ]] especifica a a????o a ser realizada na tabela tempor??ria global quando ?? realizada uma opera????o de ROLLBACK (ou ROLLBACK TO SAVEPOINT). Se os dados da tabela foram modificados, todas as linhas ser??o exclu??das.
SET SCHEMA MYAPP; CREATE TABLE T1(C11 INT, C12 DATE); DECLARE GLOBAL TEMPORARY TABLE SESSION.T1(C11 INT) NOT LOGGED; -- A qualifica????o SESSION ?? redundante, porque as tabelas tempor??rias -- somente podem existir no esquema SESSION. DECLARE GLOBAL TEMPORARY TABLE T2(C21 INT) NOT LOGGED; -- A tabela tempor??ria n??o ?? qualificada neste caso com SESSION, porque -- as tabelas tempor??rias somente podem existir no esquema SESSION. INSERT INTO SESSION.T1 VALUES (1); -- Neste caso a qualifica????o SESSION ?? obrigat??ria para utilizar a -- tabela tempor??ria, porque o esquema corrente ?? MYAPP. SELECT * FROM T1; -- Esta instru????o SELECT est?? fazendo refer??ncia ?? tabela f??sica -- "MYAPP.T1", uma vez que a tabela n??o foi qualificada com SESSION.
Deve ser observado que as tabelas tempor??rias somente podem ser declaradas no esquema SESSION. Nunca deve ser declarado um esquema f??sico com o nome SESSION.
As tabelas tempor??rias n??o pode ser especificadas nas restri????es referenciais.
N??o h?? suporte para restri????o de verifica????o nas colunas.
As tabelas tempor??rias n??o podem ser referenciadas por uma instru????o-SQL-engatilhada.
Se uma instru????o realizando uma inser????o, atualiza????o ou exclus??o em uma tabela tempor??ria encontrar um erro, todas as linhas da tabela ser??o exclu??das.
O Derby n??o d?? suporte em tabelas tempor??rias a:
As instru????es fazendo refer??ncia a tabelas e vis??es no esquema SESSION n??o ficam no cache.