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

Lỗi SQL Server 213:Tên cột hoặc số lượng giá trị được cung cấp không khớp với định nghĩa bảng.

Thông báo lỗi 213 là một lỗi phổ biến xảy ra khi bạn cố gắng chèn các giá trị vào bảng mà không chỉ định rõ ràng tên cột.

Lỗi trông như thế này:

Msg 213, Level 16, State 1, Line 1
Column name or number of supplied values does not match table definition.

Nó xảy ra khi bạn chỉ định sai số lượng giá trị cho bảng đó. Nói cách khác, số lượng giá trị bạn cung cấp không khớp với số cột trong bảng.

Ví dụ

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

INSERT INTO Customers
VALUES ('Jake');

Kết quả:

Msg 213, Level 16, State 1, Line 1
Column name or number of supplied values does not match table definition.

Trong trường hợp của tôi, vấn đề là bảng thực sự chứa ba cột. Định nghĩa bảng của tôi trông như thế này:

CREATE TABLE Customers (
CustomerId int IDENTITY(1,1) NOT NULL,
FirstName nvarchar(255),
LastName nvarchar(255)
);

Tôi đang cố gắng chèn một giá trị, nhưng SQL Server không biết nó sẽ đi vào cột nào, do đó xảy ra lỗi.

Tôi cũng sẽ gặp lỗi tương tự nếu tôi cố gắng chèn quá nhiều giá trị. Ví dụ:phần sau cũng tạo ra lỗi tương tự.

INSERT INTO Customers
VALUES ('Jake', 'Smith', 'New York', 'USA');

Kết quả:

Msg 213, Level 16, State 1, Line 1
Column name or number of supplied values does not match table definition.

Cách sửa lỗi

Một cách để khắc phục điều này là đảm bảo rằng số lượng giá trị bạn cố gắng chèn thực sự khớp với số cột trong bảng.

Cách tốt hơn để làm điều đó là chỉ định rõ ràng các tên cột trong INSERT của bạn tuyên bố. Làm điều này sẽ đảm bảo bạn không vô tình chèn dữ liệu vào các cột sai.

Vì vậy, tùy thuộc vào giá trị nào tôi muốn chèn, tôi có thể viết lại ví dụ của mình thành sau:

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

Hoặc cái này:

INSERT INTO Customers (FirstName, LastName)
VALUES ('Jake', 'Smith');

Tên cột ngầm định

Như đã đề cập, tốt hơn nên viết chính tả rõ ràng từng tên cột trong INSERT của bạn câu lệnh (như tôi đã làm trong ví dụ trước).

Tuy nhiên, tôi có thể thay đổi ví dụ của mình để sử dụng các tên cột ngầm định, như sau:

INSERT INTO Customers
VALUES (1, 'Jake', 'Smith');

Tuy nhiên, điều này bây giờ có thể gây ra một vấn đề riêng biệt liên quan đến cột danh tính. Xem Cách Chèn Giá trị Rõ ràng vào Cột Nhận dạng nếu bạn cần thực hiện việc này.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tìm tất cả các bảng có Cột nhận dạng trong Cơ sở dữ liệu SQL Server - Hướng dẫn SQL Server / T-SQL Phần 45

  2. Lấy số tuần cho một ngày trong MS SQL Server 2005?

  3. Trình tạo dữ liệu cho máy chủ SQL?

  4. Cập nhật truy vấn bằng Truy vấn con trong Máy chủ Sql

  5. Cách CẬP NHẬT từ CHỌN trong SQL Server