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.