TGViewer
Cross Join - канал о разработке Cross Join - канал о разработке @crossjoin · 3.82K subscribers
Post #448 3.16K
Virtual generated columns в PostgreSQL 18

В PostgreSQL 18 добавят виртуальные сгенерированные столбцы (комит). Ранее PostgreSQL уже поддерживал сгенерированные столбцы (начиная с версии 12), но только в варианте STORED, когда результат вычислений сохраняется в таблице. Теперь появилась возможность вычислять значения "на лету" при чтении, что экономит место и даёт больше гибкости в проектировании схем данных.

Как создать виртуальный столбец?

Синтаксис очень похож на STORED-столбцы, но с добавлением VIRTUAL (или просто без указания типа хранения, так как VIRTUAL теперь — поведение по умолчанию):

CREATE TABLE t (
a INT,
b INT
);

INSERT INTO t VALUES (1, 99);

ALTER TABLE t ADD COLUMN c INT GENERATED ALWAYS AS (a + b) STORED;
ALTER TABLE t ADD COLUMN d INT GENERATED ALWAYS AS (a - b) VIRTUAL;


так выглядят данные:

SELECT * FROM t;


a | b | c | d
---+----+-----+-----
1 | 99 | 100 | -98


В этом примере:

c (STORED) хранится в таблице и не пересчитывается при каждом запросе.
d (VIRTUAL) вычисляется динамически при каждом запросе.

Ограничения виртуальных столбцов

Несмотря на удобство виртуальных столбцов, у них есть ряд ограничений:

- Нельзя индексировать.
- Нельзя использовать в UNIQUE и FOREIGN KEY.
- Нельзя объявить NOT NULL, но можно использовать CHECK.
- Нельзя использовать в логической репликации.
- Нельзя делать ALTER TABLE ... DROP EXPRESSION
- Нельзя использовать в качестве столбца с типом DOMAIN.

Некоторые из этих ограничений могут быть сняты в будущих версиях PostgreSQL.

🫥 Cross Join
⠀
  • 👍 23
  • 🔥 10
  • 🤔 2
  • 👎 1
More from @crossjoin
  1. Sep 29, 2026😱 Отправили свое резюме на 129 вакансий на хх, а в ответ тишина .. Думаете, что дело в ры…
  2. Sep 28, 2026Слышал недавно в каком-то подкасте мысль, что Haskell плохо подходит для вайбкодинга прост…
  3. Sep 26, 2026Антон Жиянов написал мини-книгу по Go-concurrency. Это что-то вроде плотного конспекта с и…
  4. Sep 22, 2026photo post
  5. Sep 14, 2026Поможем Руслану собрать фидбек. Проект некоммерческий 👆
  6. Sep 14, 2026AGBX (Agent Box) — небольшой open-source CLI для запуска Claude Code и Codex в изолированн…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →