?
本文檔使用 php中文網(wǎng)手冊(cè) 發(fā)布
視圖triggers包含所有定義在當(dāng)前數(shù)據(jù)庫(kù),并且屬于當(dāng)前用戶的觸發(fā)器。(表的所有者也是觸發(fā)器的所有者。)
Table 34-45. triggers字段
名稱 | 數(shù)據(jù)類型 | 描述 |
---|---|---|
trigger_catalog | sql_identifier | 包含該觸發(fā)器的數(shù)據(jù)庫(kù)名稱(總是當(dāng)前數(shù)據(jù)庫(kù)) |
trigger_schema | sql_identifier | 包含該觸發(fā)器的模式名稱 |
trigger_name | sql_identifier | 觸發(fā)器名稱 |
event_manipulation | character_data | 激發(fā)觸發(fā)器的事件((INSERT,UPDATE, 或者DELETE) |
event_object_catalog | sql_identifier | 觸發(fā)器定義所在的表所在的數(shù)據(jù)庫(kù)名稱(總是當(dāng)前數(shù)據(jù)庫(kù)) |
event_object_schema | sql_identifier | 包含觸發(fā)器定義所在表的模式名 |
event_object_table | sql_identifier | 觸發(fā)器定義所在的表名 |
action_order | cardinal_number | 尚未實(shí)現(xiàn) |
action_condition | character_data | WHEN觸發(fā)器條件,如果沒有則為空(如果當(dāng)前的一個(gè)活躍角色不是該表的所有者也為空) |
action_statement | character_data | 觸發(fā)器執(zhí)行的語(yǔ)句(目前總是 EXECUTE PROCEDURE function(...)) |
action_orientation | character_data | 標(biāo)識(shí)觸發(fā)器是對(duì)處理的每一行激發(fā)還是對(duì)每個(gè)語(yǔ)句(ROW 或者STATEMENT) |
condition_timing | character_data | 觸發(fā)器觸發(fā)的時(shí)間(BEFORE或者AFTER) |
condition_reference_old_table | sql_identifier | 應(yīng)用于一個(gè)PostgreSQL里沒有的特性 |
condition_reference_new_table | sql_identifier | 應(yīng)用于一個(gè)PostgreSQL里沒有的特性 |
condition_reference_old_row | sql_identifier | 應(yīng)用于一個(gè)PostgreSQL里沒有的特性 |
condition_reference_new_row | sql_identifier | 應(yīng)用于一個(gè)PostgreSQL里沒有的特性 |
created | time_stamp | >應(yīng)用于一個(gè)PostgreSQL里沒有的特性 |
PostgreSQL 里面的觸發(fā)器在影響到信息模式的表現(xiàn)形式方面, 與 SQL 標(biāo)準(zhǔn)有兩處不同。首先,在 PostgreSQL 里,觸發(fā)器名字是表本地的對(duì)象, 兒不是獨(dú)立的模式對(duì)象。因此,我們可以在一個(gè)模式里定義重復(fù)的觸發(fā)器名字, 只要他們屬于不同的表。 (trigger_catalog 和 trigger_schema 實(shí)際上是用于觸發(fā)器 定義所在表的名字。) 第二,PostgreSQL 里的觸發(fā)器可以定義為在多個(gè)事件上觸發(fā) (比如ON INSERT OR UPDATE), 而 SQL 標(biāo)準(zhǔn)只允許一個(gè)。如果一個(gè)觸發(fā)器定義為在 多個(gè)事件上觸發(fā),那么在信息模式里它會(huì)表現(xiàn)為多行, 每個(gè)事件一行。因?yàn)檫@兩個(gè)原因, 視圖 triggers 的主鍵實(shí)際上是 (trigger_catalog, trigger_schema, trigger_name, event_object_table, event_manipulation), 而不是 (trigger_catalog, trigger_schema, trigger_name), 后者是 SQL 標(biāo)準(zhǔn)聲明的。 當(dāng)然,如果你定義一個(gè)遵循 SQL 標(biāo)準(zhǔn)的觸發(fā)器(觸發(fā)器名字在模式中唯一, 并且每個(gè)觸發(fā)器只有一個(gè)事件),這些事情不會(huì)煩著你。