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.


Приглашаю вас подписаться на мой канал в telegram
⠀

Источник: https://habr.com/ru/articles/886970/


Интересные статьи

Интересные статьи

Привет, меня зовут Евгений, я разработчик из Байовэр в компании НЛМК ИТ.Довелось мне тут столкнуться с разработкой системы опытно-промышленных испытаний на производстве, и если описать это к...
Разбираем библиотеку для интеграции Yandex MapKit SDK в compose проект, в том числе и мультиплатформенный. Позволяет работать с картой как с composable контентом, изменять состояние карты, удобно отоб...
АНО «Организация развития видеоигровой индустрии» представила дорожную карту, созданную на основе рекомендаций от органов исполнительной власти, госорганизаций и профессионального сообщества...
Приветствую вас (лично вас, а не всех кто это читает)! Сегодня мы: Создадим приложение (навык) Алисы с использованием нового (октябрь 2019) сервиса Yandex Cloud Functions. Настроим н...
Если вы последние лет десять следите за обновлениями «коробочной версии» Битрикса (не 24), то давно уже заметили, что обновляется только модуль магазина и его окружение. Все остальные модули как ...