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.