我想了解一下執行/激活觸發器的順序與UPDATE CASCADE FKS,關於孫表,在PostgreSQL裏(9.3)執行順序觸發的PostgreSQL
這是我有:
Parent: Invoices (invoice_id)
Child: Invoice_Lines (invoice_id, line_nbr)
Grandchild: Invoice_Line_Taxes (invoice_id, line_nbr, tax)
Invoice_Lines has FOREIGN KEY (invoice_id) REFERENCES Invoices ON UPDATE CASCADE;
Invoice_Line_Taxes has FOREIGN KEY (invoice_id, line_nbr) REFERENCES Invoice_Lines ON UPDATE CASCADE;
我在發票上也有一個自定義的UPDATE觸發器(誰的名字以S開頭,後面是RI_)。該觸發器總結髮票金額。而我的實際更新語句會更改invoice_id,它會傳播給子孫。
問題是,在我的自定義觸發器中,Invoice_Lines的invoice_id已經更改,但不是用於孫子Invoice_Line_Taxes。
SELECT * from invoice_line_taxes where invoice_id IN (5,-1);
invoice_id | line_nbr | tax_nm
------------+----------+--------
5 | 1 | HST
所以我想知道,有什麼關於這觸發執行順序:
invoice_lines: (5,1)
invoice_line_taxes: (-1,1,HST)
觸發後:
我從自定義觸發內使用RAISE傾倒行級聯觸發器?
我會認爲這樣的事情:
RI_on_invoices
RI_on_invoice_lines
S_custom_trigger
任何想法?任何人都知道我可以在哪裏獲得執行順序的官方文檔?我試過尋找有關這方面的詳細文檔,但我發現的所有內容都是按字母順序排列的。也許如果我找到有關訂購的具體細節,我可以圍繞它建立一些東西。但現在,我會基於猜測工作。
謝謝。
謝謝。解釋分析提示有很大幫助。在此之前,我創建了一個與之相呼應的小觸發器,用於評估觸發器執行的順序。 – user4317541 2014-12-31 21:03:08