Wenn Sie auf einen Fehler stoßen, der lautet:„INSERT hat mehr Ausdrücke als Zielspalten ” Wenn Sie versuchen, Daten in Postgres einzufügen, liegt das daran, dass Sie versuchen, Daten in mehr Spalten einzufügen, als die Tabelle tatsächlich enthält.
Beispielsweise könnten Sie versuchen, vier Ausdrücke in eine Tabelle einzufügen, die nur drei Spalten enthält.
Um das Problem zu beheben, entfernen Sie die zusätzlichen Ausdrücke aus Ihrem INSERT
Erklärung. Stellen Sie also sicher, dass Sie die richtige Anzahl an Spalten einfügen.
Fehlerbeispiel
Angenommen, wir haben eine Tabelle wie diese:
+-------+---------+---------+ | petid | petname | pettype | +-------+---------+---------+ | 1 | Fluffy | Cat | | 2 | Tweet | Bird | +-------+---------+---------+
Diese Tabelle hat drei Spalten.
Angenommen, wir möchten eine weitere Zeile einfügen.
So wird der Fehler generiert:
INSERT INTO Pets VALUES ( 3, 'Wag', 'Dog', 'Brown' );
Ergebnis:
ERROR: INSERT has more expressions than target columns LINE 1: INSERT INTO Pets VALUES ( 3, 'Wag', 'Dog', 'Brown' ); ^
Hier habe ich versucht, vier Ausdrücke in eine Tabelle einzufügen, die nur drei Spalten hat.
Lösung
Die Lösung ist einfach. Entfernen Sie den zusätzlichen Ausdruck:
INSERT INTO Pets VALUES ( 3, 'Wag', 'Dog' );
Hier habe ich den letzten Ausdruck entfernt (Brown
) aus den VALUES
aufführen. Dies führte dazu, dass die Zeile ohne Fehler eingefügt wurde.
Um sicherzustellen, dass Sie nicht versehentlich Daten in die falsche Spalte einfügen, können Sie jede Spalte explizit angeben:
INSERT INTO Pets ( PetId, PetName, PetType )
VALUES ( 1, 'Wag', 'Dog' );
Nachdem Sie eine der obigen Anweisungen ausgeführt haben, sieht die Tabelle nun so aus:
SELECT * FROM Pets;
Ergebnis:
+-------+---------+---------+ | petid | petname | pettype | +-------+---------+---------+ | 1 | Fluffy | Cat | | 2 | Tweet | Bird | | 3 | Wag | Dog | +-------+---------+---------+
Wir haben die Zeile erfolgreich in die Tabelle eingefügt.