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

Błąd serwera SQL 109:W instrukcji INSERT jest więcej kolumn niż wartości określonych w klauzuli VALUES

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Co to jest Azure Data Studio?

  2. Jaka jest różnica między char, nchar, varchar i nvarchar w programie SQL Server?

  3. Dodaj przesunięcie strefy czasowej do wartości datetime2 w programie SQL Server (T-SQL)

  4. Dlaczego warto korzystać z Select Top 100 procent?

  5. Przechowywanie komunikatu raiserror z SqlServer w C#