支援的版本:目前 (17) / 16 / 15 / 14 / 13
開發版本:devel
不支援的版本:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4

35.57. triggers #

檢視表 triggers 包含目前資料庫中,使用者擁有或具有除了 SELECT 之外的權限的資料表和檢視表上定義的所有觸發器。

表 35.55. triggers 欄位

欄位類型

描述

trigger_catalog sql_identifier

包含觸發器的資料庫名稱(永遠是目前的資料庫)

trigger_schema sql_identifier

包含觸發器的綱要名稱

trigger_name sql_identifier

觸發器的名稱

event_manipulation character_data

觸發觸發器的事件 (INSERTUPDATEDELETE)

event_object_catalog sql_identifier

包含定義觸發器的資料表的資料庫名稱(永遠是目前的資料庫)

event_object_schema sql_identifier

包含定義觸發器的資料表的綱要名稱

event_object_table sql_identifier

定義觸發器的資料表名稱

action_order cardinal_number

在具有相同 event_manipulationaction_timingaction_orientation 的相同資料表上的觸發器之間的觸發順序。在 PostgreSQL 中,觸發器依名稱順序觸發,因此此欄位反映了這一點。

action_condition character_data

觸發器的 WHEN 條件,如果沒有則為空值(如果資料表不是目前啟用的角色的擁有者,則也為空值)

action_statement character_data

觸發器執行的陳述式(目前始終是 EXECUTE FUNCTION function(...)

action_orientation character_data

識別觸發器是針對每個處理過的資料列觸發一次,還是針對每個陳述式觸發一次 (ROWSTATEMENT)

action_timing character_data

觸發器觸發的時間 (BEFOREAFTERINSTEAD OF)

action_reference_old_table sql_identifier

轉換資料表的名稱,如果沒有則為空值

action_reference_new_table sql_identifier

轉換資料表的名稱,如果沒有則為空值

action_reference_old_row sql_identifier

適用於 PostgreSQL 中不可用的功能

action_reference_new_row sql_identifier

適用於 PostgreSQL 中不可用的功能

created time_stamp

適用於 PostgreSQL 中不可用的功能


PostgreSQL 中的觸發器與 SQL 標準有兩個不相容之處,會影響資訊綱要中的表示方式。首先,觸發器名稱是 PostgreSQL 中每個資料表的本機名稱,而不是獨立的綱要物件。因此,只要它們屬於不同的資料表,就可以在一個綱要中定義重複的觸發器名稱。(trigger_catalogtrigger_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_timingaction_reference_old_tableaction_reference_new_tableaction_reference_old_rowaction_reference_new_row 分別命名為 condition_timingcondition_reference_old_tablecondition_reference_new_tablecondition_reference_old_rowcondition_reference_new_row。這是它們在 SQL:1999 標準中命名的方式。新的命名符合 SQL:2003 及更高版本。

提交更正

如果您在文件中看到任何不正確、與您使用特定功能的經驗不符或需要進一步澄清的內容,請使用 此表單 回報文件問題。