sql >> Database >  >> RDS >> PostgreSQL

Fix "INSERT heeft meer expressies dan doelkolommen" in PostgreSQL

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.


  1. Moet de gemiddelde verwerkingstijd vinden tussen alle tijdstempelrecords in Oracle SQL

  2. Wat is de minimale installatie die nodig is om een ​​.NET-toepassing te implementeren met Oracle-client 11?

  3. Een overzicht van replicatie op volumeniveau voor PostgreSQL met DRBD

  4. Numerieke functies in Oracle (volledige lijst)