[MSSQL} Multi INSERT via UNION in Column mit Identity
-
Hallo!
Gegeben sei eine kleine Tabelle mit zwei Spalten:
- c1 vom Typ nvarchar(100)
- ID vom Typ INT mit der Eigenschaft Identity also mit Autoincrement.
Die Datenbank dieser Tabelle liegt auf einem SQL Compact Server 3.5.
Es sollen in diese Tabelle zwei Datensätze mit einer SQL-Anweisung eingefügt werden.
"INSERT INTO Customers SELECT 'A' AS Expr1, 0 AS Expr2 UNION SELECT 'D' AS Expr3, 1 AS Expr4"
Bei der Ausführung dieser SQL-Anweisung gibt es den Fehler:
"The column cannot be modified.[Column name = ID]"Diese Fehlermeldung ist verständlich, da ID die Identity-Eigenschaft hat.
Beim Einfügen neuer Daten, wird der Wert dieser Spalte also automatisch generiert.Lässt man die Syntax der folgenden SQL Anweisung prüfen
"INSERT INTO Customers SELECT 'A' AS Expr1 UNION SELECT 'D' AS Expr3"
dann gibt es diesen Fehler:
"The number of columns in the query and in the table must match."
Auch diese Fehlermeldung ist verständlich.Gibt es überhaupt eine Möglichkeit zwei Datensätze mit einer SQL-Anweisung
in eine Tabelle mit einer Spalte mit Identity-Eigenschaft einzufügen?Gruß, Lothar.
-
Was spricht denn gegen das:
INSERT INTO Customers (c1) SELECT 'A' AS Expr1 UNION SELECT 'D' AS Expr3
-
So klappt es.
Danke!
-
Ich würde die "AS" bei den SELECTs weglassen, da die sowieso ignoriert werden.
Und das UNION sollte eher UNION ALL sein.
Es sei denn man will/braucht das in UNION enthaltene DISTINCT auch.