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.
As tabelas temporárias são úteis quando:
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
Os tipos-de-dado suportados são:
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.
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.
A seguir está mostrada uma lista de funções da instrução
DECLARE GLOBAL TEMPORARY TABLE do DB2 UDB que não são suportadas pelo
As tabelas temporárias não podem ser especificadas nas seguintes instruções:
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.
Não podem ser utilizados os seguintes tipos de dado nas tabelas temporárias globais declaradas:
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
As instruções fazendo referência a tabelas e visões no esquema SESSION não ficam no cache.