INSERT

Name

INSERT  --  cria novas linhas na tabela

Synopsis

INSERT INTO tabela [ ( coluna [, ...] ) ]
    { DEFAULT VALUES | VALUES ( expressão [, ...] ) | SELECT consulta }
  

Entradas

tabela

O nome de uma tabela existente.

coluna

O nome de uma coluna da tabela.

DEFAULT VALUES

Todas as colunas são preenchidas com nulo, ou pelos valores especificados quando a tabela é criada usando a cláusula DEFAULT.

expressão

Uma expressão ou valor válido a ser atribuído à coluna.

consulta

Uma consulta válida. Consulte o comando SELECT para obter uma descrição mais detalhada dos argumentos válidos.

Saídas

INSERT oid 1

Mensagem retornada se somente uma linha for incluída. O identificador do objeto oid é o OID numérico da linha incluída.

INSERT 0 #

Mensagem retornada se mais de uma linha for incluída. O # é o número de linhas incluídas.

Descrição

O comando INSERT permite a inclusão de novas linhas na tabela. Pode ser incluída uma linha de cada vez, ou várias linhas como o resultado de uma consulta. As colunas da lista de inserção podem estar em qualquer ordem.

As colunas que não aparecem na lista de inserção são incluídas utilizando o valor padrão, seja o valor DEFAULT declarado, ou nulo. O PostgreSQL rejeita a nova coluna se um valor nulo for incluído em uma coluna declarada como NOT NULL.

Se a expressão para cada coluna não for do tipo de dado correto, será tentada uma conversão automática de tipo.

É necessário possuir o privilégio INSERT na tabela para inserir linhas, assim como o privilégio SELECT nas tabelas especificadas na cláusula WHERE.

Utilização

Inserir uma única linha na tabela filmes:

INSERT INTO filmes VALUES
    ('UA502','Bananas',105,'1971-07-13','Comédia',INTERVAL '82 minute');
   

No segundo exemplo, mostrado abaixo, a última coluna duração foi omitida e, portanto, vai receber o valor padrão NULL:

INSERT INTO filmes (codigo, titulo, did, data_prod, tipo)
    VALUES ('T_601', 'Yojimbo', 106, DATE '1961-06-16', 'Drama');
   

Inserir uma única linha na tabela distribuidores; observe que somente a coluna nome está especificada, portanto vai ser atribuído o valor padrão para a coluna did que foi omitida:

INSERT INTO distribuidores (nome) VALUES ('Entrega Rápida');
   

Inserir várias linhas na tabela filmes a partir da tabela tmp:

INSERT INTO filmes SELECT * FROM tmp;
   

Inclusão em arrays (Consulte o Guia do Usuário do PostgreSQL para obter mais informações sobre arrays):

-- Criar um tabuleiro vazio de 3x3 posições para o Jogo da Velha
-- (todos 3 comandos criam o mesmo atributo do tabuleiro)
INSERT INTO tictactoe (game, board[1:3][1:3])
    VALUES (1,'{{"","",""},{},{"",""}}');
INSERT INTO tictactoe (game, board[3][3])
    VALUES (2,'{}');
INSERT INTO tictactoe (game, board)
    VALUES (3,'{{,,},{,,},{,,}}');
   

Compatibilidade

SQL92

O comando INSERT é totalmente compatível com o SQL92. As possíveis limitações nas funcionalidades da cláusula de consulta estão documentadas no comando SELECT.