sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server Error 110:Det finns färre kolumner i INSERT-satsen än de värden som anges i VALUES-satsen.

Felmeddelande 110 är ett vanligt förekommande fel i SQL Server när data infogas i en tabell. Hela felet ser ut så här:

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.

Detta händer när du anger färre kolumner i INSERT sats än antalet värden som du försöker infoga med VALUES klausul.

Detta kommer att inträffa om du av misstag utelämnar en eller flera kolumner från INSERT uttalande.

Du skulle få ett liknande (men tekniskt annorlunda) fel om du försökte göra tvärtom – ange mer kolumner i INSERT uttalande än du försöker infoga.

Exempel

Här är ett exempel att visa.

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 det här fallet anger jag en kolumn för att infoga data i (FirstName ), men jag anger sedan två värden att infoga (Bob och Brown ).

Hur du åtgärdar felet

Du kan åtgärda det här felet genom att se till att antalet kolumner matchar antalet värden som ska infogas.

I mitt exempel kan jag antingen ta bort ett av värdena som ska infogas, eller lägga till en andra kolumn för att tillgodose det andra värdet.

Så jag kunde göra så här:

INSERT INTO Customers (FirstName) 
VALUES ('Bob');

Eller det här:

INSERT INTO Customers (FirstName, LastName) 
VALUES ('Bob', 'Brown');

Det är värt att nämna att om Efternamn kolumnen har en NOT NULL begränsning, kommer det första exemplet att bryta mot den begränsningen (eftersom jag skulle försöka infoga NULL i Efternamn kolumn när det faktiskt finns en NOT NULL begränsning på den kolumnen).

Om det bara finns två kolumner i tabellen kan jag också göra så här:

INSERT INTO Customers
VALUES ('Bob', 'Brown');

Även om det vanligtvis är bättre att explicit ange kolumnnamnen om möjligt (som i föregående exempel).


  1. Windows PSQL kommandorad:finns det ett sätt att tillåta lösenordslös inloggning?

  2. MySQL 'Order By' - sorterar alfanumeriskt korrekt

  3. Hur man läser MySQL binära loggfiler (BinLog) med mysqlbinlog

  4. Platta ut korsande tidsperioder