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 (Bob
và Brown
).
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).