Introdução
Uma tabela temporaria (temporary table) é uma tabela como as demais, exceto pelo fato de que ela somente existe enquanto a sessão na qual ela foi criada estiver ativa, ou seja, assim que a conexão com o banco é fechada a tabela temporária é dropada do banco. Em geral este tipo de tabela é usado para armazenar o resultado imediato de uma consulta executada anteriormente.
Criando Uma Tabela Temporária
A sintaxe para criar uma tabela tempoáaria é:
CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE nome_da_tabela [ (nome_da_coluna [, ...] ) ] [ WITH ( parâmetro_de_armazenamento [= valor] [, ... ] ) | WITH OIDS | WITHOUT OIDS ] [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ] [ TABLESPACE espaço_de_tabelas ] AS comando |
Exemplo
+------------+ | SALARIO | +------------+ | slr_valor | | pss_cod | +------------+ +------------+ | PESSOA | +------------+ | pss_cod | | pss_nome | +------------+
Listando o salário de todas as pessoas e depois calculando o valor total:
-- Lista as pessoas SELECT pss_cod, pss_nome, slr_valor FROM pessoa p INNER JOIN salario s ON p.pss_cod = s.pss_cod -- Cria a tabela temporária CREATE TEMPORARY TABLE pessoa_salario AS SELECT pss_cod, pss_nome, slr_valor FROM pessoa p INNER JOIN salario s ON p.pss_cod = s.pss_cod -- Calcula a soma de todos os salários SELECT SUM(slr_valor) FROM pessoa_salario |
Conclusão
Em um primeiro momento pode-se imaginar que as tabelas temporárias não sejam muito úteis porém em diversas ocasiões a melhor forma para resolver problemas complexos e através de tabelas temporárias, principalmente quando as SQL envolvidas são complexas e aninhadas.
Referências
http://www.postgresqlguide.com/creating-tables-in-postgresql.aspx
http://pgdocptbr.sourceforge.net/pg82/sql-createtableas.html