Komunikat o błędzie 110 jest często spotykanym błędem w programie SQL Server podczas wstawiania danych do tabeli. Pełny błąd wygląda tak:
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.
Dzieje się tak, gdy określisz mniej 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 kolumn w INSERT
oświadczenie.
Otrzymasz podobny (ale technicznie inny) błąd, jeśli spróbujesz zrobić coś przeciwnego – określ więcej kolumny w INSERT
oświadczenie niż próbujesz wstawić.
Przykład
Oto przykład do zademonstrowania.
INSERT INTO Customers (FirstName)
VALUES ('Bob', 'Brown');
Wynik:
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.
W tym przypadku określam jedną kolumnę do wstawienia danych (FirstName
), ale następnie określam dwie wartości do wstawienia (Bob
i Brown
).
Jak naprawić błąd
Możesz naprawić ten błąd, upewniając się, że liczba kolumn odpowiada liczbie wartości do wstawienia.
W moim przykładzie mógłbym albo usunąć jedną z wartości do wstawienia, albo dodać drugą kolumnę, aby uwzględnić drugą wartość.
Więc mogłem to zrobić:
INSERT INTO Customers (FirstName)
VALUES ('Bob');
Albo to:
INSERT INTO Customers (FirstName, LastName)
VALUES ('Bob', 'Brown');
Warto wspomnieć, że 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).
Jeśli w tabeli są tylko dwie kolumny, mogę również zrobić to:
INSERT INTO Customers
VALUES ('Bob', 'Brown');
Chociaż zwykle lepiej jest wyraźnie podać nazwy kolumn, jeśli to możliwe (jak w poprzednim przykładzie).