INSERT

Name

INSERT  --  crée de nouvelles lignes dans une table.

Synopsis

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

Entrées

table

nom d'une table existante.

column

nom d'une colonne dans table.

DEFAULT VALUES

Toutes les colonnes seront remplies par des valeurs NULL ou par dess valeurs spécifiées lors de la création de la table en utilisant des clauses DEFAULT.

expression

expression valide ou valeur à assigner à column.

query

requête valide. Voir la commande SELECT pour plus d'information sur les arguments valides.

Sorties

INSERT oid 1

message retourné si une seule ligne a été insérée. oid est le OID numérique de la ligne insérée..

INSERT 0 #

message retourné si plusieurs lignes sont insérées. # est le nombre de lignes insérées..

Description

INSERT permet d'insérer de nouvelles lignes dans une table. On peut insérer une seule ligne ou plusieurs lignes comme résultat d'une requête. Les colonnes dans la liste cible peuvent être listées dans n'importe quel ordre.

Chaque colonne non présente dans la liste cible sera insérée en utilisant une valeur par défaut, soit une valeur DEFAULT déclarée soit NULL. PostgreSQL rejettera la nouvelle colonne si un NULL est inséré dans une colonne déclarée NOT NULL.

Si l'expression de chaque colonne n'est pas de type correct, la coercition de type automatique sera tentée.

Vous devez avoir les droits d'écriture sur une table afin de la joindre de même vous devez avoir les droits de sélection sur certaines tables spécifiées dans la clause WHERE.

Utilisation

insère une seule ligne dans la table films:

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

dans le second exemple la colonne len est omise et désormais aura la valeur NULL :

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

insère une seule ligne dans la table distributors; notez que seule la colonne name est spécifiée, ainsi la colonne omise did se verra assigner la valeur par défaut de celle-ci :

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

insère plusieurs lignes dans la table films depuis la table tmp:

INSERT INTO films SELECT * FROM tmp;
   

Insertion dans des tableaux (voir le Guide de l'utilisateur PostgreSQL pour plus d'information sur les tableaux) :

-- Create an empty 3x3 gameboard for noughts-and-crosses
-- (all of these queries create the same board attribute)
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,'{{,,},{,,},{,,}}');
   

Compatibilité

SQL92

INSERT est pleinement compatible avec le SQL92. De possibles limitations dans les fonctionnalités de la clause query sont documentées pour SELECT.