том, что мне нужно создать generated column в таблице, значение которого будет высчитываться из значений столбца другой таблицы, для чего я использую следующую конструкцию:
alter table detail
add average_price int GENERATED ALWAYS AS (
AVG(detail_in_shop.price) FILTER ( WHERE detail_in_shop.is_enabled = true AND detail_in_shop.detail_id = detail.id)
) STORED;
Но, я полагаю, что-то я делаю не так, потому что получаю ошибку, не могли бы вы подсказать, где я косячу?
А если просто по старинке в тригерной функции заполнять значение...
GENERATED ALWAYS AS (генерирующее_выражение ) STORED Это предложение создаёт столбец как генерируемый. В такой столбец нельзя записать данные, а при чтении его возвращается результат указанного выражения. Ключевое слово STORED отмечает, что этот столбец будет вычисляться при записи и сохраняться на диске. Генерирующее выражение может обращаться к другим столбцам таблицы, но не к другим генерируемым столбцам. Все функции и операторы в нём должны быть постоянными. Обращаться к другим таблицам в таких выражениях нельзя.
Обсуждают сегодня