INSERT

Name

INSERT -- erzeugt neue Zeilen in einer Tabelle

Synopsis

INSERT INTO tabelle [ ( spalte [, ...] ) ]
    { DEFAULT VALUES | VALUES ( { ausdruck | DEFAULT } [, ...] ) | anfrage }

Beschreibung

INSERT fügt neue Zeilen in eine Tabelle ein. Man kann einzelne Zeilen einfügen oder mehrere Zeilen aus dem Ergebnis einer Anfrage.

Die Spalten in der Spaltenliste können in beliebiger Reihenfolge aufgelistet werden. Für jede Spalte, die nicht aufgezählt ist, wird der Vorgabewert eingefügt, entweder ein ausdrücklich definierter oder der NULL-Wert.

Wenn die Ausdrücke für jede Spalte nicht den richtigen Datentyp haben, dann wird versucht sie automatisch in den richtigen Typ umzuwandeln.

Um in eine Tabelle einfügen zu können, müssen Sie das Privileg INSERT für die Tabelle haben. Wenn Sie die Klausel anfrage verwenden um Zeilen aus einer Anfrage einzufügen, dann benötigen Sie außerdem das Privileg SELECT für alle Tabellen, die in der Anfrage verwendet werden.

Parameter

tabelle

Der Name einer Tabelle (möglicherweise mit Schemaqualifikation).

spalte

Der Name einer Spalte in tabelle.

DEFAULT VALUES

All Spalten werden mit dem Vorgabewert gefüllt.

ausdruck

Ein Ausdruck oder Wert, der der Spalte zugewiesen werden soll.

DEFAULT

Diese Spalte wird mit ihrem Vorgabewert gefüllt.

anfrage

Eine Anfrage (SELECT-Befehl), die die einzufügenden Zeilen liefert. Eine Beschreibung der Syntax erhalten Sie beim SELECT-Befehl.

Meldungen

INSERT oid 1

Meldung, wenn nur eine Zeile eingefügt wurde. oid ist die OID der neuen Zeile.

INSERT 0 zahl

Meldung, wenn mehr als eine Zeile eingefügt wurde. zahl ist die Anzahl der eingefügten Zeilen.

Beispiele

Das erste Beispiel fügt eine einzelne Zeile in die Tabelle filme ein:

INSERT INTO filme
    VALUES ('UA502', 'Bananas', 105, '1971-07-13', 'Comedy', '82 minutes');

Im zweiten Beispiel wird die letzte Spalte länge weggelassen und erhält daher den NULL-Wert als Vorgabewert:

INSERT INTO filme (code, titel, vid, prod_datum, genre)
    VALUES ('T_601', 'Yojimbo', 106, '1961-06-16', 'Drama');

Im dritten Beispiel wird die Klausel DEFAULT für die Datumsspalten verwendet anstatt einen Wert anzugeben:

INSERT INTO filme
    VALUES ('UA502', 'Bananas', 105, DEFAULT, 'Comedy', '82 minutes');
INSERT INTO filme (code, titel, vid, prod_datum, genre)
    VALUES ('T_601', 'Yojimbo', 106, DEFAULT, 'Drama');

Dieses Beispiel fügt mehrere Zeilen aus der Tabelle tmp in die Tabelle filme ein:

INSERT INTO filme SELECT * FROM tmp;

Dieses Beispiel fügt Werte in Arrayspalten ein:

-- Erzeuge ein 3x3-Spielfeld für Tic-Tac-Toe
-- (jeder dieser Befehle erzeugt das gleiche Spielfeld)
INSERT INTO tictactoe (spiel, brett[1:3][1:3])
    VALUES (1, '{{"","",""},{},{"",""}}');
INSERT INTO tictactoe (spiel, brett[3][3])
    VALUES (2, '{}');
INSERT INTO tictactoe (spiel, brett)
    VALUES (3, '{{,,},{,,},{,,}}');

Kompatibilität

Dieser Befehl ist mit dem SQL-Standard konform. Mögliche Einschränkungen in der Klausel anfrage sind unter SELECT beschrieben.