Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Грешка на SQL Server 110:Има по-малко колони в израза INSERT от стойностите, посочени в клаузата VALUES.

Съобщение за грешка 110 е често срещана грешка в SQL Server при вмъкване на данни в таблица. Пълната грешка изглежда така:

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.

Това се случва, когато посочите по-малко колони в INSERT израз от броя на стойностите, които се опитвате да вмъкнете с VALUES клауза.

Това ще се случи, ако случайно пропуснете една или повече колони от INSERT изявление.

Ще получите подобна (но технически различна) грешка, ако се опитате да направите обратното – посочете още колони в INSERT изявление, отколкото се опитвате да вмъкнете.

Пример

Ето пример за демонстрация.

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

Резултат:

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.

В този случай посочвам една колона за вмъкване на данни в (FirstName ), но след това посочвам две стойности за вмъкване (Bob и Brown ).

Как да поправя грешката

Можете да коригирате тази грешка, като се уверите, че броят на колоните съответства на броя на стойностите, които трябва да бъдат вмъкнати.

В моя пример бих могъл или да премахна една от стойностите, които трябва да се вмъкнат, или да добавя втора колона, за да се погрижа за втората стойност.

Така че мога да направя това:

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

Или това:

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

Струва си да се спомене, че ако Фамилия колоната има NOT NULL ограничение, първият пример ще наруши това ограничение (защото ще се опитвам да вмъкна NULL в Фамилия колона, когато всъщност има NOT NULL ограничение за тази колона).

Ако има само две колони в таблицата, мога да направя и това:

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

Въпреки че обикновено е по-добре да посочите изрично имената на колоните, ако е възможно (както в предишния пример).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да препратите JSON ключове, които съдържат специални символи, когато използвате OPENJSON, JSON_QUERY и JSON_VALUE (SQL сървър)

  2. Множество индекси срещу индекси с няколко колони

  3. Вземете основните колони на изглед въз основа на неговия набор от резултати

  4. INFORMATION_SCHEMA срещу sysobjects

  5. Тип данни за съхраняване на IP адрес в SQL Server