Anfang des Inhaltsbereichs

INSERT-Anweisung (insert_statement) 

Die INSERT-Anweisung (insert_statement) erzeugt neue Zeilen einer Tabelle.

Syntax

<insert_statement> ::=
  INSERT [INTO] <table_name> [(<column_name>,...)] VALUES (<insert_expression>,...) [<duplicates_clause>]
| INSERT [INTO] <table_name> [(<column_name>,...)] <query_expression> [<duplicates_clause>]
| INSERT [INTO] <table_name> SET <set_insert_clause>,... [<duplicates_clause>]

<insert_expression> ::= <extended_expression> | <subquery>

table_name, column_name, extended_expression, duplicates_clause, subquery, query_expression, set_insert_clause

Erläuterung

Der Tabellenname muss eine existierende Basistabelle oder View-Tabelle (siehe Tabelle) oder ein Synonym bezeichnen.

Wenn Spaltennamen oder eine SET INSERT-Klausel (set_insert_clause) angegeben sind, müssen alle angegebenen Spaltennamen Spalten der angegebenen Tabelle sein. Wenn die Tabelle ohne Schlüssel definiert wurde (d.h. vom Datenbanksystem wird intern die Spalte SYSKEY erzeugt), darf die Spalte SYSKEY nicht in der Folge der genannten Spalten oder in einer SET INSERT-Klausel vorkommen. Eine Spalte darf nicht mehrmals in einer Folge von Spaltennamen oder in mehr als einer SET INSERT-Klausel enthalten sein.

Der Benutzer muss das INSERT-Privileg für die durch den Tabellennamen identifizierte Tabelle besitzen. Wenn durch den Tabellennamen eine View-Tabelle identifiziert wird, ist es möglich, dass selbst der Eigentümer der View-Tabelle das INSERT-Privileg nicht besitzt, weil die View-Tabelle nicht änderbar ist.

Eine angegebene Spalte (optional durch column_name oder Spaltenname in der set_insert_clause) ist eine Zielspalte. Die Zielspalten können in beliebiger Reihenfolge angegeben werden.

·        Wenn kein Spaltenname und keine SET INSERT-Klausel angegeben ist, so hat das die gleiche Wirkung wie die Angabe einer Folge von Spalten, die alle Spalten der Tabelle in der bei der CREATE TABLE-Anweisung bzw. CREATE VIEW-Anweisung angegebenen Reihenfolge enthält. In diesem Fall sind alle vom Benutzer definierten Spalten der Tabelle Zielspalten.

·        Die Anzahl der Ausdrücke (insert_expression) muss der Anzahl der Zielspalten entsprechen. Dem i-ten Spaltennamen ist der i-te Ausdruck zugeordnet.

·        Ausdrücke (extended_expression) und Subqueries (subquery) können gleichzeitig angegeben werden.

·        Es können eine oder mehrere Subqueries angegeben werden.

·        Die angegebenen Subqueries dürfen nur genau eine Ergebniszeile liefern.

·        Die Anzahl der im QUERY-Ausdruck (query_expression) angegebenen selektierten Spalten muss der Anzahl der Zielspalten entsprechen.

·        Alle Pflichtspalten der durch den Tabellennamen identifizierten Tabelle müssen Zielspalten sein.

·        Wenn der Tabellenname eine View-Tabelle identifiziert, werden Zeilen in die der View-Tabelle zugrundeliegende(n) Basistabelle(n) eingefügt. Die Zielspalten des angegebenen Tabellennamens korrespondieren in diesem Fall mit Spalten von Basistabellen, die der View-Tabelle zugrundeliegen. Im folgenden identifiziert der Begriff Zielspalte immer die korrespondierende Spalte der Basistabelle.

Weitere Informationen

·        Datentyp der Zielspalte und Datentyp des einzufügenden Wertes

·        Join-View-Tabelle in INSERT-Anweisung

·        QUERY-Ausdruck in INSERT-Anweisung

·        DUPLICATES-Klausel (duplicates_clause)

·        Constraint-Definition in INSERT-Anweisung

·        Trigger in INSERT-Anweisung

Bei der INSERT-Anweisung wird der dritte Eintrag von SQLERRD in der SQLCA mit der Anzahl der eingefügten Zeilen belegt.

Treten beim Einfügen von Zeilen Fehler auf, scheitert die INSERT-Anweisung und hinterläßt eine unveränderte Tabelle.

Ende des Inhaltsbereichs