我有兩列表permit_table與列構建器和permit_number weekly_table與列申請人和permit_number。 現在,如果在permit_table的builder列中有任何更新,我需要更新weekly_table的申請者列,其中'old申請人值+新建造者值',如果來自permit_table的更新的建造者值的許可證編號應該與任何許可證編號在weekly_table中。 我曾與下面的觸發嘗試和功能在postgresql更新觸發器後更新從一個表格到另一個表格的值
CREATE OR REPLACE FUNCTION edmonton.automated_builder_update_trigger_manual()
RETURNS trigger AS
$BODY$
DECLARE
e record;
BEGIN
EXECUTE format('Update weekly_table as a
set applicant = old.applicant||new.builder where old.permit_number =
a.permit_number');
RETURN NULL;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION edmonton.automated_builder_update_trigger_manual()
OWNER TO postgres;
和觸發是
CREATE TRIGGER builder_update_trigger_manual
AFTER UPDATE
ON edmonton.permit_table
FOR EACH ROW
WHEN (old.builder IS DISTINCT FROM new.builder)
EXECUTE PROCEDURE edmonton.automated_builder_update_trigger_manual();
我得到錯誤「FROM子句中缺少的條目表‘老’。
直接寫更新的函數體有OLD *和新*進行插值處理。與將查詢傳遞給不需要插值的'EXECUTE'相反,這與您需要的內容相反,以及爲什麼SQL查找「old」作爲真正的表。 –
謝謝你的工作。 –