| PostgreSQL 8.0.0 中文文件(轉譯自 PostgreSQL 中國 製作的簡體中文版本) | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 32. 觸發器 | Fast Forward | Next |
如果您在您的觸發器函數里執行 SQL 命令,並且這些命令訪問觸發器所在的資料表, 那麼您必須知道觸發器的可讀性規則,因為這些規則決定這些 SQL 命令是否能看到觸發觸發器的資料改變。 簡單說:
語句級別的觸發器遵循簡單的可讀性原則:在語句之前(before)觸發的觸發器看不到所有語句做的修改, 而所有修改都可以被語句之後(after)觸發的觸發器看到。
導致觸發器觸發的資料改變(插入,更新,或者刪除)通常是不能被一個before觸發器裡面執行的 SQL 命令看到的, 因為它還沒有發生。
不過,在 before 觸發器裡執行的 SQL 命令將會看到在同一個外層命令前面處理的行做的資料改變。 這一點需要我們仔細,因為這些改變時間的順序通常是不可預期的; 一個影響多行的 SQL 命令可能以任意順序訪問這些行。
在一個 after 觸發器被觸發的時候,所有外層命令產生的資料改變都已經完成, 可以被所執行的 SQL 命令看到。
有關資料可讀性規則的更多訊息可以在 Section 39.4 找到。 Section 32.4 裡的例子包含這些規則的演示。