[MSSQL} Multi INSERT via UNION in Column mit Identity



  • Hallo!

    Gegeben sei eine kleine Tabelle mit zwei Spalten:

    1. c1 vom Typ nvarchar(100)
    2. 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.


Anmelden zum Antworten