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

SQL Server-fejl 109:Der er flere kolonner i INSERT-sætningen end værdier angivet i VALUES-sætningen

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


  1. Transaktionsisolering i PostgreSQL

  2. Når der ikke er angivet nogen 'Bestil efter', hvilken rækkefølge vælger en forespørgsel for dit rekordsæt?

  3. Typekonvertering. Hvad gør jeg med en PostgreSQL OID-værdi i libpq i C?

  4. ScaleGrid DBaaS udvider MySQL Hosting Services gennem AWS Cloud