Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Lỗi máy chủ SQL 110:Có ít cột trong câu lệnh INSERT hơn giá trị được chỉ định trong mệnh đề VALUES.

Thông báo lỗi 110 là một lỗi thường gặp trong SQL Server khi chèn dữ liệu vào bảng. Toàn bộ lỗi trông như thế này:

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.

Điều này xảy ra khi bạn chỉ định ít cột hơn trong INSERT tuyên bố ngoài số lượng giá trị mà bạn đang cố gắng chèn với VALUES mệnh đề.

Điều này sẽ xảy ra nếu bạn vô tình bỏ qua một hoặc nhiều cột từ INSERT tuyên bố.

Bạn sẽ gặp lỗi tương tự (nhưng khác về mặt kỹ thuật) nếu bạn cố gắng làm ngược lại - chỉ định thêm trong INSERT tuyên bố hơn bạn cố gắng chèn.

Ví dụ

Đây là một ví dụ để chứng minh.

INSERT INTO Customers (FirstName) 
VALUES ('Bob', 'Brown');

Kết quả:

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.

Trong trường hợp này, tôi chỉ định một cột để chèn dữ liệu vào (FirstName ), nhưng sau đó tôi chỉ định hai giá trị để chèn (BobBrown ).

Cách sửa lỗi

Bạn có thể sửa lỗi này bằng cách đảm bảo số cột khớp với số giá trị được chèn.

Trong ví dụ của tôi, tôi có thể xóa một trong các giá trị sẽ được chèn hoặc thêm cột thứ hai để phục vụ cho giá trị thứ hai.

Vì vậy, tôi có thể làm điều này:

INSERT INTO Customers (FirstName) 
VALUES ('Bob');

Hoặc cái này:

INSERT INTO Customers (FirstName, LastName) 
VALUES ('Bob', 'Brown');

Điều đáng nói là nếu LastName cột có NOT NULL ràng buộc, ví dụ đầu tiên sẽ vi phạm ràng buộc đó (vì tôi đang cố chèn NULL vào LastName khi thực sự có NOT NULL ràng buộc vào cột đó).

Nếu chỉ có hai cột trong bảng, tôi cũng có thể làm điều này:

INSERT INTO Customers
VALUES ('Bob', 'Brown');

Mặc dù thông thường tốt hơn là nêu rõ ràng các tên cột nếu có thể (như trong ví dụ trước).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tôi có thể phân cách bằng dấu phẩy nhiều hàng thành một cột không?

  2. Brent Ozar giải thích sự phân mảnh bên trong và bên ngoài của SQL Server

  3. Tìm kiếm chuỗi ký tự đại diện Trigram trong SQL Server

  4. Truy vấn SQL Server - phép nhân theo nhóm

  5. Nhận hàng cập nhật