我已經在復合型別上定義了幾個函式來充當計算欄位,如下所示:
CREATE OR REPLACE FUNCTION status_affaireannulee(affaires) RETURNS BOOLEAN
AS $BODY$
SELECT COALESCE($1.affannulee,FALSE) OR $1.constatdecarence;
$BODY$ LANGUAGE sql IMMUTABLE;
這里,affaires是一個表的名稱。所以我可以打電話:
SELECT a.status_affaireannulee FROM affaires a WHERE idaffaire=1234;
現在我希望在更新觸發器中使用此功能,如下所示:
CREATE OR REPLACE FUNCTION affaires_update_CaseProgress() RETURNS trigger AS
$BODY$
BEGIN
IF NEW.status_affaireannulee THEN
RAISE NOTICE 'affaire annulée';
END IF;
RETURN NEW;
END;
$BODY$ LANGUAGE plpgsql;
CREATE TRIGGER affaires_caseprogress
BEFORE INSERT OR UPDATE ON affaires
FOR EACH ROW
EXECUTE PROCEDURE affaires_update_CaseProgress();
但是 PostgreSQL 告訴我“記錄?新?沒有?status_affaireannulee?欄位”(法語免費翻譯)。
我做錯了什么還是這是不可能的?我正在使用 PostgreSQL 11。
uj5u.com熱心網友回復:
您可以將NEW引數傳遞給函式,而不是使用點符號:
status_affaireannulee(NEW)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/418800.html
標籤:
上一篇:升級到postgres版本14
