PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Correction "INSERT a plus d'expressions que de colonnes cibles" dans PostgreSQL

Si vous rencontrez une erreur indiquant "INSERT a plus d'expressions que de colonnes cibles " Lorsque vous essayez d'insérer des données dans Postgres, c'est parce que vous essayez d'insérer des données dans plus de colonnes que la table n'en contient réellement.

Par exemple, vous essayez peut-être d'insérer quatre expressions dans un tableau qui ne contient que trois colonnes.

Pour corriger, supprimez la ou les expressions supplémentaires de votre INSERT déclaration. En d'autres termes, assurez-vous d'insérer le bon nombre de colonnes.

Exemple d'erreur

Supposons que nous ayons un tableau comme celui-ci :

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

Ce tableau comporte trois colonnes.

Supposons maintenant que nous voulions insérer une autre ligne.

Voici comment générer l'erreur :

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

Résultat :

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

Ici, j'ai essayé d'insérer quatre expressions dans un tableau qui n'a que trois colonnes.

Solution

La solution est simple. Supprimez l'expression supplémentaire :

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

Ici, j'ai supprimé la dernière expression (Brown ) à partir des VALUES liste. Cela a entraîné l'insertion de la ligne sans erreur.

Ou, pour vous assurer de ne pas insérer par inadvertance des données dans la mauvaise colonne, vous pouvez indiquer explicitement chaque colonne :

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

Après avoir exécuté l'une des instructions ci-dessus, le tableau ressemble maintenant à ceci :

SELECT * FROM Pets;

Résultat :

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

Nous avons inséré avec succès la ligne dans le tableau.