35.55. triggers
ÐÑедÑÑавление triggers показÑÐ²Ð°ÐµÑ Ð²Ñе ÑÑиггеÑÑ, опÑеделÑннÑе в ÑекÑÑей базе даннÑÑ
Ð´Ð»Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð¸ пÑедÑÑавлений, к коÑоÑÑм Ð¸Ð¼ÐµÐµÑ Ð´Ð¾ÑÑÑп ÑекÑÑий полÑзоваÑÐµÐ»Ñ (ÑвлÑÑÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑем или Ð¸Ð¼ÐµÑ Ð½ÐµÐºÐ¾ÑоÑÑе пÑава, кÑоме SELECT).
ТаблиÑа 35.53. СÑолбÑÑ triggers
| ÐÐ¼Ñ | Тип даннÑÑ | ÐпиÑание |
|---|---|---|
trigger_catalog | sql_identifier | ÐÐ¼Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ , ÑодеÑжаÑей ÑÑÐ¸Ð³Ð³ÐµÑ (вÑегда ÑекÑÑÐ°Ñ Ð±Ð°Ð·Ð°) |
trigger_schema | sql_identifier | ÐÐ¼Ñ ÑÑ ÐµÐ¼Ñ, ÑодеÑжаÑей ÑÑÐ¸Ð³Ð³ÐµÑ |
trigger_name | sql_identifier | ÐÐ¼Ñ ÑÑиггеÑа |
event_manipulation | character_data | СобÑÑие, вÑзÑваÑÑие ÑÑабаÑÑвание ÑÑиггеÑа (INSERT, UPDATE или DELETE) |
event_object_catalog | sql_identifier | ÐÐ¼Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ , ÑодеÑжаÑей ÑаблиÑÑ, Ð´Ð»Ñ ÐºÐ¾ÑоÑой опÑеделÑн ÑÑÐ¸Ð³Ð³ÐµÑ (вÑегда ÑекÑÑÐ°Ñ Ð±Ð°Ð·Ð°) |
event_object_schema | sql_identifier | ÐÐ¼Ñ ÑÑ ÐµÐ¼Ñ, ÑодеÑжаÑей ÑаблиÑÑ, Ð´Ð»Ñ ÐºÐ¾ÑоÑой опÑеделÑн ÑÑÐ¸Ð³Ð³ÐµÑ |
event_object_table | sql_identifier | ÐÐ¼Ñ ÑаблиÑÑ, Ð´Ð»Ñ ÐºÐ¾ÑоÑой опÑеделÑн ÑÑÐ¸Ð³Ð³ÐµÑ |
action_order | cardinal_number | ÐоÑÑдок ÑÑабаÑÑÐ²Ð°Ð½Ð¸Ñ ÑÑиггеÑов, имеÑÑиÑ
одинаковÑе ÑвойÑÑва event_manipulation, action_timing и action_orientation. Ð Postgres Pro ÑÑиггеÑÑ ÑÑабаÑÑваÑÑ Ð¿Ð¾ поÑÑÐ´ÐºÑ Ð¸Ñ
имÑн, ÑÑо и оÑÑажаеÑÑÑ Ð² ÑÑом ÑÑолбÑе. |
action_condition | character_data | УÑловие WHEN ÑÑиггеÑа, либо NULL, еÑли его Ð½ÐµÑ (Ñак же NULL, еÑли ÑаблиÑа не пÑÐ¸Ð½Ð°Ð´Ð»ÐµÐ¶Ð¸Ñ ÑекÑÑей акÑивной Ñоли) |
action_statement | character_data | ÐпеÑаÑоÑ, вÑполнÑемÑй ÑÑиггеÑом (в наÑÑоÑÑее вÑÐµÐ¼Ñ Ð²Ñегда EXECUTE FUNCTION ) |
action_orientation | character_data | ÐпÑеделÑеÑ, ÑÑабаÑÑÐ²Ð°ÐµÑ Ð»Ð¸ ÑÑÐ¸Ð³Ð³ÐµÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ обÑабаÑÑваемой ÑÑÑоки или ÑолÑко Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ опеÑаÑоÑа (ROW или STATEMENT) |
action_timing | character_data | ÐÐ¾Ð¼ÐµÐ½Ñ ÑÑабаÑÑÐ²Ð°Ð½Ð¸Ñ ÑÑиггеÑа (BEFORE (до), AFTER (поÑле) или INSTEAD OF (вмеÑÑо)) |
action_reference_old_table | sql_identifier | ÐÐ¼Ñ Â«ÑÑаÑой» пеÑÐµÑ Ð¾Ð´Ð½Ð¾Ð¹ ÑаблиÑÑ Ð»Ð¸Ð±Ð¾ NULL, еÑли ÐµÑ Ð½ÐµÑ |
action_reference_new_table | sql_identifier | ÐÐ¼Ñ Â«Ð½Ð¾Ð²Ð¾Ð¹Â» пеÑÐµÑ Ð¾Ð´Ð½Ð¾Ð¹ ÑаблиÑÑ Ð»Ð¸Ð±Ð¾ NULL, еÑли ÐµÑ Ð½ÐµÑ |
action_reference_old_row | sql_identifier | ÐÑноÑиÑÑÑ Ðº ÑÑнкÑионалÑноÑÑи, оÑÑÑÑÑÑвÑÑÑей в Postgres Pro |
action_reference_new_row | sql_identifier | ÐÑноÑиÑÑÑ Ðº ÑÑнкÑионалÑноÑÑи, оÑÑÑÑÑÑвÑÑÑей в Postgres Pro |
created | time_stamp | ÐÑноÑиÑÑÑ Ðº ÑÑнкÑионалÑноÑÑи, оÑÑÑÑÑÑвÑÑÑей в Postgres Pro |
ТÑиггеÑÑ Ð² Postgres Pro неÑовмеÑÑÐ¸Ð¼Ñ Ñо ÑÑандаÑÑом в двÑÑ
аÑпекÑаÑ
, коÑоÑÑе влиÑÑÑ Ð½Ð° иÑ
пÑедÑÑавление в инÑоÑмаÑионной ÑÑ
еме. Ðо-пеÑвÑÑ
, имена ÑÑиггеÑов ÑвлÑÑÑÑÑ Ð»Ð¾ÐºÐ°Ð»ÑнÑми Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑаблиÑÑ Ð² Postgres Pro, а не незавиÑимÑми обÑекÑами ÑÑ
емÑ. Таким обÑазом, в одной ÑÑ
еме могÑÑ Ð±ÑÑÑ Ð´ÑблиÑÑÑÑиеÑÑ Ð¸Ð¼ÐµÐ½Ð° ÑÑиггеÑов, еÑли они пÑÐ¸Ð½Ð°Ð´Ð»ÐµÐ¶Ð°Ñ ÑазнÑм ÑаблиÑам. (ÐнаÑÐµÐ½Ð¸Ñ trigger_catalog и trigger_schema на Ñамом деле оÑноÑÑÑÑÑ Ðº ÑаблиÑе, Ð´Ð»Ñ ÐºÐ¾ÑоÑой опÑеделÑн ÑÑиггеÑ.) Ðо-вÑоÑÑÑ
, ÑÑиггеÑÑ Ð² Postgres Pro могÑÑ ÑÑабаÑÑваÑÑ Ð¿Ñи неÑколÑкиÑ
ÑобÑÑиÑÑ
(напÑимеÑ, 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 и более поздним.