Jest to często spotykany błąd w programie SQL Server podczas wstawiania danych do tabeli. Pełny błąd wygląda tak:
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.
Dzieje się tak, gdy określisz więcej kolumn w INSERT niż liczba wartości, które próbujesz wstawić za pomocą VALUES klauzula.
Nastąpi to, jeśli przypadkowo pominiesz jedną lub więcej wartości z VALUES klauzula.
Otrzymasz podobny (ale technicznie inny) błąd, jeśli spróbujesz zrobić coś przeciwnego – określ mniej kolumny w INSERT oświadczenie niż próbujesz wstawić.
Przykład
Oto przykład do zademonstrowania.
INSERT INTO Customers (FirstName, LastName)
VALUES ('Bob'); Wynik:
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.
W tym przypadku określam dwie kolumny (FirstName , LastName ), ale określam tylko jedną wartość do wstawienia (Bob ).
Jak naprawić błąd
Mogę to naprawić, usuwając jedną z kolumn lub dodając drugą wartość do wstawienia.
Więc mogłem to zrobić:
INSERT INTO Customers (FirstName)
VALUES ('Bob'); Albo to:
INSERT INTO Customers (FirstName, LastName)
VALUES ('Bob', 'Brown');
Chociaż, korzystając z tych przykładów, jeśli LastName kolumna ma NOT NULL ograniczenie, pierwszy przykład naruszy to ograniczenie (ponieważ próbowałbym wstawić NULL w nazwisko kolumna, gdy faktycznie występuje NOT NULL ograniczenie w tej kolumnie).