Đây là lỗi thường gặp trong SQL Server khi chèn dữ liệu vào bảng. Toàn bộ lỗi xảy ra như thế này:
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.
Điều này xảy ra khi bạn chỉ định nhiều 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 giá trị khỏi VALUES
mệnh đề.
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 ít hơn trong INSERT
tuyên bố mà bạn cố gắng chèn.
Ví dụ
Đây là một ví dụ để chứng minh.
INSERT INTO Customers (FirstName, LastName)
VALUES ('Bob');
Kết quả:
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.
Trong trường hợp này, tôi chỉ định hai cột (FirstName
, LastName
), nhưng tôi chỉ chỉ định một giá trị để chèn (Bob
).
Cách sửa lỗi
Tôi có thể sửa lỗi này bằng cách xóa một trong các cột hoặc thêm giá trị thứ hai sẽ được chèn vào.
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');
Mặc dù, bằng cách sử dụng các ví dụ này, 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 đó).