Dette er en almindeligt forekommende fejl i SQL Server, når data indsættes i en tabel. Den fulde fejl lyder sådan her:
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.
Dette sker, når du angiver flere kolonner i INSERT
sætning end antallet af værdier, som du forsøger at indsætte med VALUES
klausul.
Dette vil ske, hvis du ved et uheld udelader en eller flere værdier fra VALUES
klausul.
Du ville få en lignende (men teknisk anderledes) fejl, hvis du forsøgte at gøre det modsatte – angiv færre kolonner i INSERT
sætning, end du forsøger at indsætte.
Eksempel
Her er et eksempel til at demonstrere.
INSERT INTO Customers (FirstName, LastName)
VALUES ('Bob');
Resultat:
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.
I dette tilfælde angiver jeg to kolonner (FirstName
, LastName
), men jeg angiver kun én værdi at indsætte (Bob
).
Sådan rettes fejlen
Jeg kan løse dette ved enten at fjerne en af kolonnerne eller tilføje en anden værdi, der skal indsættes.
Så jeg kunne gøre dette:
INSERT INTO Customers (FirstName)
VALUES ('Bob');
Eller denne:
INSERT INTO Customers (FirstName, LastName)
VALUES ('Bob', 'Brown');
Selvom ved hjælp af disse eksempler, hvis Efternavn kolonne har en NOT NULL
begrænsning, vil det første eksempel overtræde denne begrænsning (fordi jeg ville forsøge at indsætte NULL
ind i Efternavn kolonne, når der faktisk er en NOT NULL
begrænsning på den kolonne).