Als u een fout tegenkomt die luidt:"INSERT heeft meer expressies dan doelkolommen ” wanneer u gegevens probeert in te voegen in Postgres, komt dit omdat u gegevens in meer kolommen probeert in te voegen dan de tabel daadwerkelijk bevat.
U probeert bijvoorbeeld vier uitdrukkingen in te voegen in een tabel die slechts drie kolommen bevat.
Om dit op te lossen, verwijdert u de extra uitdrukking(en) uit uw INSERT
uitspraak. Met andere woorden, zorg ervoor dat u het juiste aantal kolommen invoert.
Voorbeeld van fout
Stel dat we een tabel hebben zoals deze:
+-------+---------+---------+ | petid | petname | pettype | +-------+---------+---------+ | 1 | Fluffy | Cat | | 2 | Tweet | Bird | +-------+---------+---------+
Die tabel heeft drie kolommen.
Stel nu dat we nog een rij willen invoegen.
Zo genereert u de fout:
INSERT INTO Pets VALUES ( 3, 'Wag', 'Dog', 'Brown' );
Resultaat:
ERROR: INSERT has more expressions than target columns LINE 1: INSERT INTO Pets VALUES ( 3, 'Wag', 'Dog', 'Brown' ); ^
Hier heb ik geprobeerd vier uitdrukkingen in te voegen in een tabel die maar drie kolommen heeft.
Oplossing
De oplossing is eenvoudig. Verwijder de extra uitdrukking:
INSERT INTO Pets VALUES ( 3, 'Wag', 'Dog' );
Hier heb ik de laatste uitdrukking verwijderd (Brown
) van de VALUES
lijst. Dit resulteerde erin dat de rij foutloos werd ingevoegd.
Of, om ervoor te zorgen dat u niet per ongeluk gegevens in de verkeerde kolom invoegt, kunt u elke kolom expliciet vermelden:
INSERT INTO Pets ( PetId, PetName, PetType )
VALUES ( 1, 'Wag', 'Dog' );
Na het uitvoeren van een van de bovenstaande instructies, ziet de tabel er nu als volgt uit:
SELECT * FROM Pets;
Resultaat:
+-------+---------+---------+ | petid | petname | pettype | +-------+---------+---------+ | 1 | Fluffy | Cat | | 2 | Tweet | Bird | | 3 | Wag | Dog | +-------+---------+---------+
We hebben de rij met succes in de tabel ingevoegd.