CREATE TABLE AS

Nome

CREATE TABLE AS -- cria uma tabela a partir dos resultados de um comando

Sinopse

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

Descrição

O comando CREATE TABLE AS cria uma tabela e a preenche com dados computados pelo comando SELECT. As colunas da tabela possuem os nomes e tipos de dado associados às colunas de saída do comando SELECT (mas é possível mudar os nomes das colunas fornecendo uma lista explícita contendo os novos nomes das colunas). [1]

O comando CREATE TABLE AS possui alguma semelhança com o comando de criação de uma visão, mas na realidade é bastante diferente: este comando cria a nova tabela e executa a consulta apenas uma vez para preencher inicialmente a nova tabela. A nova tabela não acompanha as mudanças posteriores ocorridas nas tabelas de origem do comando. Diferentemente, a visão executa novamente o comando SELECT que a define sempre que é consultada.

Parâmetros

GLOBAL ou LOCAL

Ignorado por compatibilidade. Para obter detalhes deve ser consultado o comando CREATE TABLE.

TEMPORARY ou TEMP

Se for especificado a tabela será criada como sendo uma tabela temporária. Para obter detalhes deve ser consultado o comando CREATE TABLE.

nome_da_tabela

O nome (opcionalmente qualificado pelo esquema) da tabela a ser criada.

nome_da_coluna

O nome da coluna na nova tabela. Se os nomes das colunas não forem fornecidos, estes serão obtidos a partir dos nomes das colunas de saída do comando. Se a tabela for criada a partir de um comando EXECUTE, não poderá ser especificada a lista contendo os nomes das colunas.

WITH ( parâmetro_de_armazenamento [= valor] [, ... ] )

Esta cláusula especifica os parâmetros de armazenamento opcionais para a nova tabela. Para obter mais informações deve ser consultado Parâmetros de Armazenamento. A cláusula WITH também pode incluir OIDS=TRUE (ou apenas OIDS) para especificar que as linhas da nova tabela devem possuir OIDs (identificadores de objeto) atribuídas as mesmas, ou OIDS=FALSE para especificar que as linhas não devem possuir OIDs. Para obter detalhes deve ser consultado o comando CREATE TABLE.

WITH OIDS
WITHOUT OIDS

Estas são sintaxes em obsolescência equivalentes a WITH (OIDS) e WITH (OIDS=FALSE), respectivamente. Se for desejado fornecer tanto a definição de OIDS quanto os parâmetros de armazenamento, será necessário utilizar a sintaxe WITH ( ... ); veja acima.

ON COMMIT

O comportamento das tabelas temporárias ao término do bloco de transação pode ser controlado utilizando ON COMMIT. As três opções são:

PRESERVE ROWS

Não é realizada nenhuma ação especial ao término da transação. Este é o comportamento padrão.

DELETE ROWS

Todas as linhas da tabela temporária são excluídas ao término de cada bloco de transação. Essencialmente, é feito um TRUNCATE automático após cada efetivação.

DROP

A tabela temporária é removida ao término do bloco de transação corrente.

TABLESPACE espaço_de_tabelas

O espaço_de_tabelas é o nome do espaço de tabelas onde a nova tabela será criada. Se não for especificado será utilizado o default_tablespace, ou o espaço de tabelas padrão do banco de dados se default_tablespace for uma cadeia de caracteres vazia.

comando

Um comando SELECT ou VALUES, ou um comando EXECUTE que executa um comando SELECT ou VALUES preparado.

Observações

Este comando é funcionalmente equivalente ao comando SELECT INTO, mas é preferido por ser menos propenso a ser confundido com outros usos da sintaxe do SELECT INTO. Além disso, o comando CREATE TABLE AS oferece um superconjunto das funcionalidades oferecidas pelo comando SELECT INTO.

Antes do PostgreSQL 8.0, o comando CREATE TABLE AS sempre incluía os OIDs nas tabelas criadas. A partir do PostgresSQL 8.0, o comando CREATE TABLE AS passou a permitir ao usuário especificar explicitamente se os OIDs devem ser incluídos. Se a presença dos OIDs não for especificada explicitamente, será utilizada a variável de configuração default_with_oids. A partir do PostgreSQL 8.1, o valor padrão desta variável passou a ser falso e, portanto, o comportamento padrão não é mais idêntico aos das versões pré-8.0. Os aplicativos que requerem a presença de OIDs nas tabelas criadas pelo comando CREATE TABLE AS devem especificar explicitamente WITH (OIDS) para garantir o comportamento apropriado.

Exemplos

Criar a tabela filmes_recentes consistindo apenas das entradas recentes da tabela filmes:

CREATE TABLE filmes_recentes AS
  SELECT * FROM filmes WHERE data_prod >= '2002-01-01';

Criar a tabela temporária filmes_recentes consistindo apenas das entradas recentes da tabela filmes, utilizando um comando preparado. A nova tabela possui OIDs e será removida na efetivação:

PREPARE filmes_recentes(date) AS
  SELECT * FROM filmes WHERE data_prod > $1;
CREATE TEMP TABLE filmes_recentes WITH (OIDS) ON COMMIT DROP AS
  EXECUTE filmes_recentes('2002-01-01');

Compatibilidade

O comando CREATE TABLE AS está em conformidade com o padrão SQL, com as seguintes exceções:

Consulte também

CREATE TABLE, EXECUTE, SELECT, SELECT INTO, VALUES

Notas

[1]

DB2 — No comando CREATE TABLE, a cláusula LIKE nome da tabela, nome da visão ou apelido especifica que as colunas da tabela possuem exatamente o mesmo nome e descrição das colunas da tabela, visão ou apelido identificado. O nome especificado após o LIKE deve identificar uma tabela, visão ou apelido existente no catálogo, ou uma tabela temporária declarada. DB2 Version 9 for Linux, UNIX, and Windows (N. do T.)

SourceForge.net Logo CSS válido!