PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

CREATE VIEW указва повече имена на колони, отколкото колони

Помислете за простия пример:

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

Когато функцията е извикана в контекста на колона/променлива, тя връща единствената стойност от посочения тип на връщане. Ето източника на грешката:select на изгледа връща само една колона.

Въпреки това, ако функцията е извикана в контекста на таблицата, тя връща стойностите като истинска таблица:

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

Така че трябва да използвате втория подход, когато създавате изгледа:

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. UUID или SEQUENCE за първичен ключ?

  2. PostgreSQL динамичен достъп до таблици

  3. UPDATE table_name SET col_name =varchar WHERE col_name е NULL;

  4. Как да запазя JS Date.now() в PostgreSQL?

  5. Мониторинг на разпространението на Percona за PostgreSQL – ключови показатели