2025年9月25日: PostgreSQL 18 釋出!
支援版本: 當前 (18) / 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條件,如果不存在則為null(如果表不屬於當前啟用的角色,也為null)

action_statement character_data

由觸發器執行的語句(目前始終為EXECUTE FUNCTION function(...)

action_orientation character_data

標識觸發器是為每個處理的行觸發一次還是為每個語句觸發一次(ROWSTATEMENT

action_timing character_data

觸發器觸發的時間(BEFOREAFTERINSTEAD OF

action_reference_old_table sql_identifier

”轉換表的名稱,如果不存在則為null

action_reference_new_table sql_identifier

”轉換表的名稱,如果不存在則為null

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及更高版本。

提交更正

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