2015-06-20 106 views
-1

爲了給回滾錯誤的命令提供了可能性,我準備了一個防呆回滾memu。它的作用是這樣一個Ctrl-Z。爲此,我準備了包含所有操作的日誌表。回滾菜單將事務操作分組,並顯示所有表。因此UNION與表的數量有很大關係,而GROUP BY嵌套在另一個查詢中,在這些查詢中給出了一些字段的信息來識別已完成的操作。並且全部存儲在視圖中。沒有什麼可以說日誌tsbles的大小,不允許在它們之間放置LIMIT和ORDER語句的幾個聯合使得查詢效率不高。我正在考慮生成帶有由每個STATUS觸發器填充的表的回滾菜單。捕捉後的行動。日誌表捕獲BEFORE。但是我必須確定,在插入/刪除所有行之後,纔會觸發EACH STATMENT行爲。爲了在事務和其他信息中包含記錄數量。每個STATEMENT觸發器是在事務結束時觸發,還是隨第一行或隨機觸發?觸發執行順序

回答

1

從文檔:

Statement-level BEFORE triggers naturally fire before the statement starts to do anything, while statement-level AFTER triggers fire at the very end of the statement.

http://www.postgresql.org/docs/9.4/interactive/trigger-definition.html

換句話說,一個前語句觸發器將要運行的語句執行之前和語句之後觸發只會之後運行語句完成執行。

語句級別觸發器不能是約束觸發器,只有約束觸發器是可延遲的,所以在事務結束之前無法推遲觸發器。

如果在給定時間需要運行多個觸發器,它們將按照其名稱的字母順序運行 。

+0

謝謝,我讀了很多次關於的所有文檔,並且從未找到這個頁面。 – jurhas