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

Изчислени / изчислени / виртуални / извлечени колони в PostgreSQL

До 11 генерирани колони от Postgres не се поддържат - както е дефинирано в SQL стандарта и се изпълнява от някои RDBMS, включително DB2, MySQL и Oracle. Нито подобните „изчислени колони“ на SQL Server.

STORED генерираните колони се въвеждат с Postgres 12 . Тривиален пример:

CREATE TABLE tbl (
  int1    int
, int2    int
, product bigint GENERATED ALWAYS AS (int1 * int2) STORED
);

db<>цигулка тук

VIRTUAL генерираните колони може да идват с една от следващите итерации. (все още не е в Postgres 14).

Свързано:

  • Атрибутната нотация за извикване на функция дава грешка

Дотогава , можете да емулирате VIRTUAL генерирани колони сфункция използвайки нотация на атрибут (tbl.col ), който изглежда и работи много като виртуална генерирана колона . Това е малко синтактична странност, която съществува в Postgres по исторически причини и се случва да пасва на случая. Този свързан отговор има примери за код :

  • Да се ​​съхранява обща заявка като колона?

Изразът (приличащ на колона) не е включен в SELECT * FROM tbl , все пак. Винаги трябва да го изброявате изрично.

Може да се поддържа и със съвпадащ индекс на израза - при условие, че функцията е IMMUTABLE . Като:

CREATE FUNCTION col(tbl) ... AS ...  -- your computed expression here
CREATE INDEX ON tbl(col(tbl));

Алтернативи

Като алтернатива можете да приложите подобна функционалност с VIEW , по избор съчетано с индекси на изрази. След това SELECT * може да включва генерираната колона.

„Устойчиво“ (STORED ) изчислените колони могат да бъдат реализирани с тригери по функционално идентичен начин.

Материализираните изгледи са тясно свързана концепция, внедрена от Postgres 9.3.
В по-ранни версии човек може да управлява MV ръчно.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Проверете дали в PostgreSQL вече съществува дефиниран от потребителя тип

  2. Групиране по клаузи — GeneralBits на elein

  3. Заявките за тип SELECT ли са единственият тип, който може да бъде вложен?

  4. Как да оценим израза в оператора select в Postgres

  5. 3 начина за изброяване на всички съхранени процедури, които препращат към таблица в PostgreSQL