Fejlmeddelelse 110 er en almindeligt forekommende fejl i SQL Server, når data indsættes i en tabel. Den fulde fejl ser således ud:
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.
Dette sker, når du angiver færre 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 kolonner fra INSERT
erklæring.
Du ville få en lignende (men teknisk anderledes) fejl, hvis du forsøgte at gøre det modsatte – angiv mere kolonner i INSERT
sætning, end du forsøger at indsætte.
Eksempel
Her er et eksempel til at demonstrere.
INSERT INTO Customers (FirstName)
VALUES ('Bob', 'Brown');
Resultat:
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.
I dette tilfælde angiver jeg én kolonne til at indsætte data i (FirstName
), men jeg angiver så to værdier, der skal indsættes (Bob
og Brown
).
Sådan rettes fejlen
Du kan rette denne fejl ved at sørge for, at antallet af kolonner matcher antallet af værdier, der skal indsættes.
I mit eksempel kunne jeg enten fjerne en af værdierne, der skal indsættes, eller tilføje en anden kolonne for at tage højde for den anden værdi.
Så jeg kunne gøre dette:
INSERT INTO Customers (FirstName)
VALUES ('Bob');
Eller denne:
INSERT INTO Customers (FirstName, LastName)
VALUES ('Bob', 'Brown');
Det er værd at nævne, at 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).
Hvis der kun er to kolonner i tabellen, kunne jeg også gøre dette:
INSERT INTO Customers
VALUES ('Bob', 'Brown');
Selvom det normalt er bedre at udtrykke kolonnenavnene, hvis det er muligt (som i det foregående eksempel).