我有兩張桌子:postavka和detail。我需要向postavka添加一個自動生成的列,該列是通過乘法生成的postavka.count(由postavka中的詳細資訊欄位detail.price選擇的詳細資訊)。
我創建了腳本ALTER TABLE IF EXISTS public.postavka ADD COLUMN total_price double precision GENERATED ALWAYS AS (postavka.count * (select price from detail where (postavka.detail == detail.id)) STORED;,但它不正確。我必須如何將其更改為有效?

uj5u.com熱心網友回復:
GENERATEDcolumns 只能參考同一張表的其他列,因此與您的情況無關。
您可以使用觸發功能完成這項作業:
CREATE OR REPLACE FUNCTION before_insert_update_postavka() RETURNS trigger LANGUAGE plpgsql AS $$
BEGIN
SELECT NEW.count * price
INTO NEW.total_price
FROM detail
WHERE id = NEW.detail ;
RETURN NEW ;
END ; $$
CREATE OR REPLACE TRIGGER before_insert_update_postavka BEFORE INSERT OR UPDATE ON postavka
FOR EACH ROW EXECUTE FUNCTION before_insert_update_postavka() ;
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/522468.html
