Если значение полностью зависит от других колонок, не обязательно считать его перед каждым
INSERT и UPDATE.PostgreSQL умеет делать это сам и всегда гарантирует корректный результат.
INSERT INTO orders(price, quantity)
VALUES (100, 3);
SELECT total
FROM orders
WHERE id = 1;
Поле
total заполнится автоматически. Его нельзя случайно забыть обновить или вычислить по старой формуле.UPDATE orders
SET quantity = 5
WHERE id = 1;
SELECT total
FROM orders
WHERE id = 1;
После изменения исходных данных значение пересчитается автоматически.
ALTER TABLE products
ADD COLUMN search_name text
GENERATED ALWAYS AS (lower(name)) STORED;
Это удобно для нормализованных значений, поисковых ключей, вычисляемых сумм и любых других детерминированных данных, которые должны всегда оставаться консистентными.
🔥 Если колонка полностью вычисляется из других колонок, пусть этим занимается PostgreSQL. Логику проще поддерживать, когда вычисление в одном месте.
➡️ SQL Ready | #совет
