INSERT

Nom

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

Synopsis

INSERT INTO table [ ( colonne [, ...] ) ]
    { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) | requête }

Description

INSERT permet d'insérer de nouvelles lignes dans une table. Il est possible d'insérer une ligne à la fois ou plusieurs lignes comme résultat d'une requête.

Les colonnes de la liste cible peuvent être données dans n'importe quel ordre. Chaque colonne absente de la liste cible sera insérée en utilisant une valeur par défaut, que sa valeur par défaut soit déclarée ou NULL.

Si l'expression pour chaque colonne n'est pas du bon type de données, la conversion automatique de type sera tentée.

Vous devez avoir le droit INSERT sur une table pour pouvoir lui insérer des lignes. Si vous utilisez la clause requête pour insérer des lignes à partir d'une requête, vous avez aussi besoin d'avoir un droit SELECT sur toute table utilisée dans la requête.

Paramètres

table

Le nom d'une table existante (pouvant être qualifié du nom du schéma).

colonne

Le nom d'une colonne dans table.

DEFAULT VALUES

Toutes les colonnes auront leurs valeurs par défaut.

expression

Une expression ou une valeur à affecter à colonne.

DEFAULT

La colonne sera remplie avec sa valeur par défaut.

requête

Une requête (instruction SELECT) fournissant les lignes à insérer. Référez-vous à l'instruction SELECT pour une description de la syntaxe.

Sorties

En cas de succès, une commande INSERT renvoie un code de la forme

INSERT oid nombre

Le nombre correspond au nombre de lignes insérées. Si nombre vaut exactement un et que la table cible contient des OID, alors oid est l'OID affecté à la ligne insérée. Sinon, oid vaut zéro.

Exemples

Insérez une seule ligne dans la table films :

INSERT INTO films VALUES
    ('UA502', 'Bananas', 105, '1971-07-13', 'Comédie', '82 minutes');

Dans ce second exemple, la dernière colonne longueur est omise et, du coup, elle aura la valeur par défaut, NULL :

INSERT INTO films (code, titre, did, date_prod, genre)
    VALUES ('T_601', 'Yojimbo', 106, '1961-06-16', 'Drame');

Le troisième exemple utilise la clause DEFAULT pour les colonnes date plutôt que de spécifier une valeur :

INSERT INTO films VALUES
    ('UA502', 'Bananas', 105, DEFAULT, 'Comédie', '82 minutes');
INSERT INTO films (code, title, did, date_prod, kind)
    VALUES ('T_601', 'Yojimbo', 106, DEFAULT, 'Drame');

Cet exemple insère plusieurs lignes dans la table films à partir de la table table tmp :

INSERT INTO films SELECT * FROM tmp;

Cet exemple insére dans des colonnes de type tableau :

-- Create an empty 3x3 gameboard for noughts-and-crosses
-- (all of these commands create the same board)
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é

INSERT est totalement compatible avec le standard SQL. Les limitations possibles des clauses requête sont documentées sous SELECT.