sql >> Base de Datos >  >> RDS >> PostgreSQL

Arreglar "INSERT tiene más expresiones que columnas de destino" en PostgreSQL

Si encuentra un error que dice "INSERT tiene más expresiones que columnas de destino ” al intentar insertar datos en Postgres, es porque está intentando insertar datos en más columnas de las que contiene la tabla.

Por ejemplo, podría intentar insertar cuatro expresiones en una tabla que contiene solo tres columnas.

Para solucionarlo, elimine las expresiones adicionales de su INSERT declaración. En otras palabras, asegúrese de insertar el número correcto de columnas.

Ejemplo de error

Supongamos que tenemos una tabla como esta:

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

Esa tabla tiene tres columnas.

Ahora, supongamos que queremos insertar otra fila.

Aquí se explica cómo generar el error:

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

Resultado:

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

Aquí, traté de insertar cuatro expresiones en una tabla que solo tiene tres columnas.

Solución

La solución es fácil. Elimina la expresión extra:

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

Aquí, eliminé la última expresión (Brown ) de los VALUES lista. Esto dio como resultado que la fila se insertara sin error.

O bien, para asegurarse de no insertar datos sin darse cuenta en la columna incorrecta, puede indicar explícitamente cada columna:

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

Después de ejecutar una de las declaraciones anteriores, la tabla ahora se ve así:

SELECT * FROM Pets;

Resultado:

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

Hemos insertado correctamente la fila en la tabla.