triggers
#檢視表 triggers
包含目前資料庫中,使用者擁有或具有除了 SELECT
之外的權限的資料表和檢視表上定義的所有觸發器。
表 35.55. triggers
欄位
欄位類型 描述 |
---|
包含觸發器的資料庫名稱(永遠是目前的資料庫) |
包含觸發器的綱要名稱 |
觸發器的名稱 |
觸發觸發器的事件 ( |
包含定義觸發器的資料表的資料庫名稱(永遠是目前的資料庫) |
包含定義觸發器的資料表的綱要名稱 |
定義觸發器的資料表名稱 |
在具有相同 |
觸發器的 |
觸發器執行的陳述式(目前始終是 |
識別觸發器是針對每個處理過的資料列觸發一次,還是針對每個陳述式觸發一次 ( |
觸發器觸發的時間 ( |
「舊」轉換資料表的名稱,如果沒有則為空值 |
「新」轉換資料表的名稱,如果沒有則為空值 |
適用於 PostgreSQL 中不可用的功能 |
適用於 PostgreSQL 中不可用的功能 |
適用於 PostgreSQL 中不可用的功能 |
PostgreSQL 中的觸發器與 SQL 標準有兩個不相容之處,會影響資訊綱要中的表示方式。首先,觸發器名稱是 PostgreSQL 中每個資料表的本機名稱,而不是獨立的綱要物件。因此,只要它們屬於不同的資料表,就可以在一個綱要中定義重複的觸發器名稱。(trigger_catalog
和 trigger_schema
實際上是與定義觸發器的資料表相關的值。)其次,可以將觸發器定義為在 PostgreSQL 中觸發多個事件(例如,ON INSERT OR UPDATE
),而 SQL 標準只允許一個。如果將觸發器定義為觸發多個事件,則它在資訊綱要中表示為多個資料列,每個事件類型一個資料列。由於這兩個問題,檢視表 triggers
的主索引鍵實際上是 (trigger_catalog, trigger_schema, event_object_table, trigger_name, event_manipulation)
而不是 (trigger_catalog, trigger_schema, trigger_name)
,這是 SQL 標準所指定的。儘管如此,如果您以符合 SQL 標準的方式定義觸發器(綱要中的觸發器名稱是唯一的,並且每個觸發器只有一個事件類型),這將不會影響您。
在 PostgreSQL 9.1 之前,此檢視表的欄位 action_timing
、action_reference_old_table
、action_reference_new_table
、action_reference_old_row
和 action_reference_new_row
分別命名為 condition_timing
、condition_reference_old_table
、condition_reference_new_table
、condition_reference_old_row
和 condition_reference_new_row
。這是它們在 SQL:1999 標準中命名的方式。新的命名符合 SQL:2003 及更高版本。
如果您在文件中看到任何不正確、與您使用特定功能的經驗不符或需要進一步澄清的內容,請使用 此表單 回報文件問題。