Dies ist ein häufig auftretender Fehler in SQL Server beim Einfügen von Daten in eine Tabelle. Der vollständige Fehler lautet wie folgt:
Msg 109, Level 15, State 1, Line 1 There are more columns in the INSERT statement than values specified in the VALUES clause. The number of values in the VALUES clause must match the number of columns specified in the INSERT statement.
Dies geschieht, wenn Sie mehr Spalten im INSERT
angeben -Anweisung als die Anzahl der Werte, die Sie mit VALUES
einzufügen versuchen Klausel.
Dies tritt auf, wenn Sie versehentlich einen oder mehrere Werte aus den VALUES
weglassen Klausel.
Sie würden einen ähnlichen (aber technisch anderen) Fehler erhalten, wenn Sie versuchten, das Gegenteil zu tun – geben Sie weniger an Spalten im INSERT
Anweisung als Sie versuchen einzufügen.
Beispiel
Hier ist ein Beispiel zur Veranschaulichung.
INSERT INTO Customers (FirstName, LastName)
VALUES ('Bob');
Ergebnis:
Msg 109, Level 15, State 1, Line 1 There are more columns in the INSERT statement than values specified in the VALUES clause. The number of values in the VALUES clause must match the number of columns specified in the INSERT statement.
In diesem Fall gebe ich zwei Spalten an (FirstName
, LastName
), aber ich gebe nur einen einzufügenden Wert an (Bob
).
So beheben Sie den Fehler
Ich kann dies beheben, indem ich entweder eine der Spalten entferne oder einen zweiten einzufügenden Wert hinzufüge.
So könnte ich das tun:
INSERT INTO Customers (FirstName)
VALUES ('Bob');
Oder dies:
INSERT INTO Customers (FirstName, LastName)
VALUES ('Bob', 'Brown');
Wenn Sie jedoch diese Beispiele verwenden, wenn der Nachname Spalte hat einen NOT NULL
Einschränkung, wird das erste Beispiel diese Einschränkung verletzen (weil ich versuchen würde, NULL
einzufügen in den Nachnamen Spalte, wenn tatsächlich ein NOT NULL
vorhanden ist Einschränkung für diese Spalte).