PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Risolto il problema con "INSERT ha più espressioni rispetto alle colonne di destinazione" in PostgreSQL

Se si verifica un errore che dice "INSERT ha più espressioni rispetto alle colonne di destinazione " quando si tenta di inserire dati in Postgres, è perché si tenta di inserire dati in più colonne di quante ne contenga effettivamente la tabella.

Ad esempio, potresti provare a inserire quattro espressioni in una tabella che contiene solo tre colonne.

Per risolvere il problema, rimuovi le espressioni extra dal tuo INSERT dichiarazione. In altre parole, assicurati di inserire il numero corretto di colonne.

Esempio di errore

Supponiamo di avere una tabella come questa:

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

Quella tabella ha tre colonne.

Supponiamo ora di voler inserire un'altra riga.

Ecco come generare l'errore:

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

Risultato:

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

Qui, ho provato a inserire quattro espressioni in una tabella che ha solo tre colonne.

Soluzione

La soluzione è facile. Rimuovi l'espressione extra:

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

Qui, ho rimosso l'ultima espressione (Brown ) dal VALUES elenco. Ciò ha comportato l'inserimento della riga senza errori.

Oppure, per assicurarti di non inserire inavvertitamente i dati nella colonna sbagliata, puoi dichiarare esplicitamente ciascuna colonna:

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

Dopo aver eseguito una delle istruzioni precedenti, la tabella ora appare così:

SELECT * FROM Pets;

Risultato:

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

Abbiamo inserito correttamente la riga nella tabella.