35.53. triggers
ÐÑедÑÑавление triggers показÑÐ²Ð°ÐµÑ Ð²Ñе ÑÑиггеÑÑ, опÑеделÑннÑе в ÑекÑÑей базе даннÑÑ
Ð´Ð»Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð¸ пÑедÑÑавлений, к коÑоÑÑм Ð¸Ð¼ÐµÐµÑ Ð´Ð¾ÑÑÑп ÑекÑÑий полÑзоваÑÐµÐ»Ñ (ÑвлÑÑÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑем или Ð¸Ð¼ÐµÑ Ð½ÐµÐºÐ¾ÑоÑÑе пÑава, кÑоме SELECT).
ТаблиÑа 35.51. СÑолбÑÑ triggers
Тип ÑÑолбÑа ÐпиÑание |
|---|
ÐÐ¼Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ , ÑодеÑжаÑей ÑÑÐ¸Ð³Ð³ÐµÑ (вÑегда ÑекÑÑÐ°Ñ Ð±Ð°Ð·Ð°) |
ÐÐ¼Ñ ÑÑ ÐµÐ¼Ñ, ÑодеÑжаÑей ÑÑÐ¸Ð³Ð³ÐµÑ |
ÐÐ¼Ñ ÑÑиггеÑа |
СобÑÑие, вÑзÑваÑÑие ÑÑабаÑÑвание ÑÑиггеÑа ( |
ÐÐ¼Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ , ÑодеÑжаÑей ÑаблиÑÑ, Ð´Ð»Ñ ÐºÐ¾ÑоÑой опÑеделÑн ÑÑÐ¸Ð³Ð³ÐµÑ (вÑегда ÑекÑÑÐ°Ñ Ð±Ð°Ð·Ð°) |
ÐÐ¼Ñ ÑÑ ÐµÐ¼Ñ, ÑодеÑжаÑей ÑаблиÑÑ, Ð´Ð»Ñ ÐºÐ¾ÑоÑой опÑеделÑн ÑÑÐ¸Ð³Ð³ÐµÑ |
ÐÐ¼Ñ ÑаблиÑÑ, Ð´Ð»Ñ ÐºÐ¾ÑоÑой опÑеделÑн ÑÑÐ¸Ð³Ð³ÐµÑ |
ÐоÑÑдок ÑÑабаÑÑÐ²Ð°Ð½Ð¸Ñ ÑÑиггеÑов, имеÑÑиÑ
одинаковÑе ÑвойÑÑва |
УÑловие |
ÐпеÑаÑоÑ, вÑполнÑемÑй ÑÑиггеÑом (в наÑÑоÑÑее вÑÐµÐ¼Ñ Ð²Ñегда |
ÐпÑеделÑеÑ, ÑÑабаÑÑÐ²Ð°ÐµÑ Ð»Ð¸ ÑÑÐ¸Ð³Ð³ÐµÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ обÑабаÑÑваемой ÑÑÑоки или ÑолÑко Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ опеÑаÑоÑа ( |
ÐÐ¾Ð¼ÐµÐ½Ñ ÑÑабаÑÑÐ²Ð°Ð½Ð¸Ñ ÑÑиггеÑа ( |
ÐÐ¼Ñ Â«ÑÑаÑой» пеÑÐµÑ Ð¾Ð´Ð½Ð¾Ð¹ ÑаблиÑÑ Ð»Ð¸Ð±Ð¾ NULL, еÑли ÐµÑ Ð½ÐµÑ |
ÐÐ¼Ñ Â«Ð½Ð¾Ð²Ð¾Ð¹Â» пеÑÐµÑ Ð¾Ð´Ð½Ð¾Ð¹ ÑаблиÑÑ Ð»Ð¸Ð±Ð¾ NULL, еÑли ÐµÑ Ð½ÐµÑ |
ÐÑноÑиÑÑÑ Ðº ÑÑнкÑионалÑноÑÑи, оÑÑÑÑÑÑвÑÑÑей в Postgres Pro |
ÐÑноÑиÑÑÑ Ðº ÑÑнкÑионалÑноÑÑи, оÑÑÑÑÑÑвÑÑÑей в Postgres Pro |
ÐÑноÑиÑÑÑ Ðº ÑÑнкÑионалÑноÑÑи, оÑÑÑÑÑÑвÑÑÑей в 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 и более поздним.