Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Błąd serwera SQL 110:W instrukcji INSERT jest mniej kolumn niż wartości określone w klauzuli VALUES.

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).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jaka jest najlepsza praktyka dotycząca kluczy podstawowych w tabelach?

  2. Partycjonowana tabela sprawdzania serwera SQL

  3. Znajdź rekordy sql zawierające podobne ciągi

  4. Rekurencyjne samodołączanie SQL Server

  5. Dlaczego używanie kursorów w SQL Server jest uważane za złą praktykę?