Вычисляемый столбец PostgreSQL со значениями другой таблицы, на которые ссылается внешний ключ - PullRequest
1 голос
/ 08 ноября 2019

Сейчас я работаю над простым фиктивным проектом, чтобы освежить свои знания по SQL и выучить несколько новых вещей :)

У меня есть таблица Article со столбцами:

aID, price 

У меня есть другая таблица Storage:

sID, aID, count  

Таблица Storage ссылается на aID как внешний ключ, а в столбце подсчета указывается, сколько статьи хранится.

Теперь я хочу добавить столбец value в мою таблицу Storage. Этот столбец должен быть рассчитан как Article.price * Storage.count.

Я нашел после поиска в Интернете, что вы можете рассчитать столбцы, подобные этому

CREATE TABLE tbl 
(
     int1 INT,
     int2 INT,
     product BIGINT GENERATED ALWAYS AS (int1 * int2) STORED
);

Но я не нашел пример, как это сделатьс колонками из другой таблицы.

Что мне нужно сделать, чтобы использовать в расчете цену, на которую ссылается aID?

1 Ответ

3 голосов
/ 08 ноября 2019

Вы не можете определить сгенерированный столбец на основе значений из других таблиц. Согласно документации:

Выражение генерации может ссылаться на другие столбцы таблицы, но не на другие сгенерированные столбцы. Любые используемые функции и операторы должны быть неизменяемыми. Ссылки на другие таблицы недопустимы.

Вы можете добиться ожидаемого поведения, создав два триггера для обеих таблиц, но обычно создание представления на основе этих таблиц является более простым и эффективным решением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...