sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Server-fejl 110:Der er færre kolonner i INSERT-sætningen end værdier angivet i VALUES-udtrykket.

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


  1. Hvordan man erklærer og viser en variabel i Oracle

  2. Grundlæggende om tabeludtryk, del 7 – CTE'er, optimeringsovervejelser

  3. Oracle til PostgreSQL:Grunde til at migrere

  4. Integreret transportdatamodel