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

CREATE VIEW określa więcej nazw kolumn niż kolumn

Rozważ prosty przykład:

postgres=# create function foofunc() returns table(a int, b text) language sql as $$ select 1, 'a'::text $$;
postgres=# select foofunc();
╔═════════╗
║ foofunc ║
╠═════════╣
║ (1,a)   ║
╚═════════╝

Gdy funkcja wywoływana w kontekście kolumny/zmiennej zwraca pojedynczą wartość określonego zwracanego typu. Oto źródło błędu:select widoku zwraca tylko jedną kolumnę.

Jednak jeśli funkcja zostanie wywołana w kontekście tabeli, zwraca wartości jak prawdziwa tabela:

postgres=# select * from foofunc();
╔═══╤═══╗
║ a │ b ║
╠═══╪═══╣
║ 1 │ a ║
╚═══╧═══╝

Powinieneś więc użyć drugiego podejścia podczas tworzenia widoku:

CREATE VIEW v1 (c1, c2, c3, c4, c5) AS
  SELECT * FROM f1 (1, 2);



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nieprawidłowy format zrzutu kopii zapasowych pg:przywróć nawet za pomocą łącza pobierania Dropbox

  2. Jak zminimalizować RPO dla baz danych PostgreSQL za pomocą odzyskiwania punktu w czasie?

  3. [Laravel]:SQLSTATE[3F000]:Nieprawidłowa nazwa schematu

  4. BŁĄD:funkcje w wyrażeniu indeksu muszą być oznaczone jako IMMUTABLE w Postgresie

  5. Sekwencja PostgreSQL zapewniająca unikalny identyfikator