INSERT

Nombre

INSERT  --  Inserta filas nuevas en una tabla

Synopsis

INSERT INTO table [ ( column [, ...] ) ]
    { VALUES ( expression [, ...] ) | SELECT query }
  

Entradas

table

El nombre de una tabla existente.

column

El nombre de una columna en table.

expression

Una expresión o un valor válidos a asignar en column.

query

Una consulta válida. Vea la instrución SELECT para una mejor descripción de argumentos válidos.

Salidas

INSERT oid 1

Mensaje devuelto si solo se ha insertado una fila. oid es el número OID de la fila insertada.

INSERT 0 #

Mensaje devuelto si se ha insertado más de una fila. # es el número de filas insertadas.

Descripción

INSERT permite la inserción de nuevas filas en una clase o una tabla. Se puede insertar una fila a la vez o varias como el resultado de una consulta. Las columnas en el resultado pueden ser listadas en cualquier orden.

Cada columna que no esté presente en la lista de origen será insertada usando el valor por defecto, que puede ser tanto un valor por defecto declarado DEFAULT o bien NULL. Postgres rechazará la nueva columna si se inserta un NULL en una columna declarada como NOT NULL.

Si la expresión para cada columna no es del tipo de datos correcto, se intentará una coerción de tipos automaticamente.

Debe tener privilegios de inserción en la tabla para añadir en ella, asi como privilegios de selección en cualquier tabla especificada en una clausula WHERE.

Uso

Inserta una fila en la tabla films:

INSERT INTO films VALUES
    ('UA502','Bananas',105,'1971-07-13','Comedy',INTERVAL '82 minute');
   

En este segundo ejemplo la columna date_prod se omite y entonces tendrá el valor por defecto de NULL:

INSERT INTO films (code, title, did, date_prod, kind)
    VALUES ('T_601', 'Yojimbo', 106, DATE '1961-06-16', 'Drama');
   

Inserta una fila simple en la tabla distributors; note que solo se especifica la columna name , de forma que la columna omitida did sera asignada con su valor por defecto.

INSERT INTO distributors (name) VALUES ('British Lion');
   

Inserta varias filas en la tabla films desde la tabla tmp:

INSERT INTO films SELECT * FROM tmp;
   

Inserción en arrays (vea The PostgreSQL User's Guide para mayor información sobre los arrays):

-- Crea un tablero de juego vacio de 3x3 para cruz y raya
-- (todos estos querys generan el mismo efecto)
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,'{{,,},{,,},{,,}}');
   

Compatibilidad

SQL92

INSERT es totalmente compatible con SQL92. Las posibles limitaciones en las caracteristicas de la clausula query estan documentadas en SELECT.