Fehlermeldung 110 ist ein häufig auftretender Fehler in SQL Server beim Einfügen von Daten in eine Tabelle. Der vollständige Fehler sieht folgendermaßen aus:
Msg 110, Level 15, State 1, Line 1 There are fewer 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 passiert, wenn Sie weniger Spalten im INSERT
angeben -Anweisung als die Anzahl der Werte, die Sie mit VALUES
einzufügen versuchen Klausel.
Dies tritt auf, wenn Sie versehentlich eine oder mehrere Spalten im INSERT
weglassen Erklärung.
Sie würden einen ähnlichen (aber technisch anderen) Fehler erhalten, wenn Sie versuchten, das Gegenteil zu tun – geben Sie mehr an Spalten im INSERT
Aussage, als Sie versuchen, einzufügen.
Beispiel
Hier ist ein Beispiel zur Veranschaulichung.
INSERT INTO Customers (FirstName)
VALUES ('Bob', 'Brown');
Ergebnis:
Msg 110, Level 15, State 1, Line 1 There are fewer 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 eine Spalte an, in die Daten eingefügt werden sollen (FirstName
), aber ich gebe dann zwei einzufügende Werte an (Bob
und Brown
).
So beheben Sie den Fehler
Sie können diesen Fehler beheben, indem Sie sicherstellen, dass die Anzahl der Spalten mit der Anzahl der einzufügenden Werte übereinstimmt.
In meinem Beispiel könnte ich entweder einen der einzufügenden Werte entfernen oder eine zweite Spalte für den zweiten Wert hinzufügen.
So könnte ich das tun:
INSERT INTO Customers (FirstName)
VALUES ('Bob');
Oder dies:
INSERT INTO Customers (FirstName, LastName)
VALUES ('Bob', 'Brown');
Es ist erwähnenswert, dass 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).
Wenn es nur zwei Spalten in der Tabelle gibt, könnte ich das auch so machen:
INSERT INTO Customers
VALUES ('Bob', 'Brown');
Obwohl es normalerweise besser ist, wenn möglich die Spaltennamen explizit anzugeben (wie im vorherigen Beispiel).