支援的版本:目前 (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),而不是 SQL 標準指定的 (trigger_catalog, trigger_schema, trigger_name)。儘管如此,如果您以符合 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 及以後的標準。

提交更正

如果您在文件中發現任何不正確、與您使用特定功能的經驗不符或需要進一步澄清的地方,請使用此表格來回報文件問題。