Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server-Fehler 110:Es gibt weniger Spalten in der INSERT-Anweisung als Werte, die in der VALUES-Klausel angegeben sind.

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).