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

Sửa lỗi “INSERT có nhiều biểu thức hơn cột mục tiêu” trong PostgreSQL

Nếu bạn gặp lỗi có nội dung “ INSERT có nhiều biểu thức hơn cột mục tiêu ”Khi cố gắng chèn dữ liệu trong Postgres, đó là vì bạn đang cố chèn dữ liệu vào nhiều cột hơn so với bảng thực sự chứa.

Ví dụ:bạn có thể đang cố gắng chèn bốn biểu thức vào một bảng chỉ chứa ba cột.

Để khắc phục, hãy xóa / s biểu thức thừa khỏi INSERT của bạn tuyên bố. Nói cách khác, hãy đảm bảo rằng bạn đang chèn đúng số lượng cột.

Ví dụ về Lỗi

Giả sử chúng ta có một bảng như sau:

+-------+---------+---------+
| petid | petname | pettype |
+-------+---------+---------+
|     1 | Fluffy  | Cat     |
|     2 | Tweet   | Bird    |
+-------+---------+---------+

Bảng đó có ba cột.

Bây giờ, giả sử chúng ta muốn chèn một hàng khác.

Đây là cách tạo ra lỗi:

INSERT INTO Pets VALUES ( 3, 'Wag', 'Dog', 'Brown' );

Kết quả:

ERROR:  INSERT has more expressions than target columns
LINE 1: INSERT INTO Pets VALUES ( 3, 'Wag', 'Dog', 'Brown' );
                                                   ^

Ở đây, tôi đã cố gắng chèn bốn biểu thức vào một bảng chỉ có ba cột.

Giải pháp

Giải pháp rất dễ dàng. Loại bỏ biểu thức thừa:

INSERT INTO Pets VALUES ( 3, 'Wag', 'Dog' );

Tại đây, tôi đã xóa biểu thức cuối cùng (Brown ) từ VALUES danh sách. Điều này dẫn đến hàng được chèn mà không có lỗi.

Hoặc, để đảm bảo bạn không vô tình chèn dữ liệu vào cột sai, bạn có thể nêu rõ ràng từng cột:

INSERT INTO Pets ( PetId, PetName, PetType ) 
VALUES ( 1, 'Wag', 'Dog' );

Sau khi chạy một trong các câu lệnh trên, bảng bây giờ trông giống như sau:

SELECT * FROM Pets;

Kết quả:

+-------+---------+---------+
| petid | petname | pettype |
+-------+---------+---------+
|     1 | Fluffy  | Cat     |
|     2 | Tweet   | Bird    |
|     3 | Wag     | Dog     |
+-------+---------+---------+

Chúng tôi đã chèn thành công hàng vào bảng.


  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ốt nhất để kiểm tra giá trị trống hoặc rỗng

  2. Kết hợp các truy vấn vòng lặp lồng nhau vào kết quả mảng mẹ - pg-promise

  3. Java JDBC bỏ qua setFetchSize?

  4. Lưu đầu ra PL / pgSQL từ PostgreSQL vào tệp CSV

  5. Xác định tên bảng và cột làm đối số trong hàm plpgsql?