PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Napraw „INSERT ma więcej wyrażeń niż kolumn docelowych” w PostgreSQL

Jeśli napotkasz błąd, który brzmi „WSTAW ma więcej wyrażeń niż kolumn docelowych ” kiedy próbujesz wstawić dane w Postgresie, dzieje się tak, ponieważ próbujesz wstawić dane do większej liczby kolumn, niż faktycznie zawiera tabela.

Na przykład możesz próbować wstawić cztery wyrażenia do tabeli zawierającej tylko trzy kolumny.

Aby naprawić, usuń dodatkowe wyrażenia z INSERT oświadczenie. Innymi słowy, upewnij się, że wstawiasz prawidłową liczbę kolumn.

Przykład błędu

Załóżmy, że mamy taką tabelę:

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

Ta tabela ma trzy kolumny.

Załóżmy teraz, że chcemy wstawić kolejny wiersz.

Oto jak wygenerować błąd:

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

Wynik:

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

Tutaj próbowałem wstawić cztery wyrażenia do tabeli, która ma tylko trzy kolumny.

Rozwiązanie

Rozwiązanie jest proste. Usuń dodatkowe wyrażenie:

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

Tutaj usunąłem ostatnie wyrażenie (Brown ) z VALUES lista. Spowodowało to wstawienie wiersza bez błędu.

Lub, aby upewnić się, że nie wstawisz przypadkowo danych do niewłaściwej kolumny, możesz wyraźnie określić każdą kolumnę:

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

Po uruchomieniu jednej z powyższych instrukcji, tabela wygląda teraz tak:

SELECT * FROM Pets;

Wynik:

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

Pomyślnie wstawiliśmy wiersz do tabeli.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zaktualizować PostgreSQL10 do PostgreSQL11 bez przestojów?

  2. PostgreSQL Upsert rozróżnia wstawione i zaktualizowane wiersze za pomocą kolumn systemowych XMIN, XMAX i innych

  3. Kolumny obliczane / obliczane / wirtualne / pochodne w PostgreSQL

  4. 5 najlepszych narzędzi do monitorowania zapytań PostgreSQL

  5. Oracle do PostgreSQL — Kursory i ltrees