INSERT INTO table [ ( column [, ...] ) ] { VALUES ( expression [, ...] ) | SELECT query } |
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.
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,'{{,,},{,,},{,,}}'); |
INSERT es totalmente compatible con SQL92. Las posibles limitaciones en las caracteristicas de la clausula query estan documentadas en SELECT.