2016-05-17 52 views
0

我有一個表名爲例具有以下字段:PostgreSQL的觸發器過程以改變INSERT字段值

  • caseid(主鍵)
  • casenumber
  • dateoffiling等

等領域。

在另一個表中,發票,我指的caseid作爲foriegn鍵如

  • invoiceid(主鍵)
  • invoicecode
  • caseid(foriegn鍵 - > cases.caseid)
  • invoicedate 等

現在,每當我插入記錄,發票,我要檢查INVO icedate大於或等於cases.dateoffiling(對於特定的發票),如果不是,我想要觸發異常或設置invoicedate等於dateoffiling(您無法在提交案例前提出發票)。

我試圖用Postgresql pgsql觸發器打破我的頭,包括文檔和示例,但我無法在任何地方找到上述場景。任何幫助或指針,將不勝感激。

回答

0

我想我已經找到了觸發功能的解決方案:

CREATE OR REPLACE FUNCTION invoicedatecheck() 
    RETURNS trigger AS 
$BODY$declare 
    filingdate date; 
begin 
    select dateoffiling from cases where casesid=new.caseid into filingdate; 

    if new.invoicedate < filingdate then 
    new.invoicedate = filingdate; 
    end if; 
    return new; 
end; 
$BODY$ 
LANGUAGE plpgsql VOLATILE 
COST 100; 
ALTER FUNCTION invoicedatecheck() 
OWNER TO remoteuser;