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

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

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