Това е често срещана грешка в SQL Server при вмъкване на данни в таблица. Пълната грешка е така:
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.
Това се случва, когато посочите повече колони в INSERT
израз от броя на стойностите, които се опитвате да вмъкнете с VALUES
клауза.
Това ще се случи, ако случайно пропуснете една или повече стойности от VALUES
клауза.
Ще получите подобна (но технически различна) грешка, ако се опитате да направите обратното – посочете по-малко колони в INSERT
изявление, отколкото се опитвате да вмъкнете.
Пример
Ето пример за демонстрация.
INSERT INTO Customers (FirstName, LastName)
VALUES ('Bob');
Резултат:
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.
В този случай посочвам две колони (FirstName
, LastName
), но посочвам само една стойност за вмъкване (Bob
).
Как да поправя грешката
Мога да поправя това, като премахна една от колоните или като добавя втора стойност за вмъкване.
Така че мога да направя това:
INSERT INTO Customers (FirstName)
VALUES ('Bob');
Или това:
INSERT INTO Customers (FirstName, LastName)
VALUES ('Bob', 'Brown');
Въпреки че, използвайки тези примери, ако Фамилия колоната има NOT NULL
ограничение, първият пример ще наруши това ограничение (защото ще се опитвам да вмъкна NULL
в Фамилия колона, когато всъщност има NOT NULL
ограничение за тази колона).