Foutbericht 110 is een veelvoorkomende fout in SQL Server bij het invoegen van gegevens in een tabel. De volledige fout ziet er als volgt uit:
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.
Dit gebeurt wanneer u minder kolommen opgeeft in de INSERT
instructie dan het aantal waarden dat u probeert in te voegen met de VALUES
clausule.
Dit gebeurt als u per ongeluk een of meer kolommen weglaat uit de INSERT
verklaring.
U krijgt een vergelijkbare (maar technisch andere) fout als u het tegenovergestelde probeert - specificeer meer kolommen in de INSERT
verklaring dan u probeert in te voegen.
Voorbeeld
Hier is een voorbeeld om te demonstreren.
INSERT INTO Customers (FirstName)
VALUES ('Bob', 'Brown');
Resultaat:
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 dit geval geef ik één kolom op om gegevens in te voegen (FirstName
), maar ik geef dan twee waarden op om in te voegen (Bob
en Brown
).
Hoe de fout op te lossen
U kunt deze fout oplossen door ervoor te zorgen dat het aantal kolommen overeenkomt met het aantal in te voegen waarden.
In mijn voorbeeld zou ik ofwel een van de in te voegen waarden kunnen verwijderen, of een tweede kolom kunnen toevoegen om voor de tweede waarde te zorgen.
Dus ik zou dit kunnen doen:
INSERT INTO Customers (FirstName)
VALUES ('Bob');
Of dit:
INSERT INTO Customers (FirstName, LastName)
VALUES ('Bob', 'Brown');
Het is vermeldenswaard dat als de Achternaam kolom heeft een NOT NULL
beperking, zal het eerste voorbeeld die beperking schenden (omdat ik zou proberen om NULL
in te voegen in de Achternaam kolom wanneer er daadwerkelijk een NOT NULL
. is beperking op die kolom).
Als er slechts twee kolommen in de tabel zijn, zou ik ook dit kunnen doen:
INSERT INTO Customers
VALUES ('Bob', 'Brown');
Hoewel het meestal beter is om de kolomnamen expliciet te vermelden indien mogelijk (zoals in het vorige voorbeeld).