W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
CREATE EVENT TRIGGER — 定義一個(gè)新的事件觸發(fā)器
CREATE EVENT TRIGGER name ON
event [ WHEN
filter_variable
IN (filter_value [, ... ]) [ AND ... ] ]
EXECUTE { FUNCTION | PROCEDURE } function_name()
CREATE EVENT TRIGGER
創(chuàng)建一個(gè)新的事件觸發(fā)器。 只要指定的事件發(fā)生并且與該觸發(fā)器相關(guān)的WHEN
條件(如果有)被 滿足,該觸發(fā)器的函數(shù)將被執(zhí)行。關(guān)于事件觸發(fā)器的一般性介紹可見 第 39 章。創(chuàng)建事件觸發(fā)器的用戶會(huì)成為它的擁有者。
name
給新觸發(fā)器的名稱。在該數(shù)據(jù)庫中這個(gè)名稱必須唯一。
event
會(huì)觸發(fā)對給定函數(shù)調(diào)用的事件名稱。更多事件名稱的信息請見 第 39.1 節(jié)。
filter_variable
用來過濾事件的變量名稱。這可以用來限制觸發(fā)器只為它支持的那一部分 情況引發(fā)。當(dāng)前唯一支持的 filter_variable
是TAG
。
filter_value
與該觸發(fā)器要為其引發(fā)的 filter_variable
相關(guān)聯(lián) 的一個(gè)值列表。對于TAG
,這表示一個(gè)命令標(biāo)簽列表(例如 'DROP FUNCTION'
)。
function_name
一個(gè)用戶提供的函數(shù),它被聲明為沒有參數(shù)并且返回類型 event_trigger
。
在CREATE EVENT TRIGGER
的語法中,關(guān)鍵字CREATE EVENT TRIGGER
和PROCEDURE
是等效的,但是被引用的函數(shù)在任何情況下都必須是函數(shù),而不是過程。 此處關(guān)鍵字PROCEDURE
的使用是歷史性的,已棄用。
只有超級用戶能創(chuàng)建事件觸發(fā)器。
在單用戶模式(見postgres)中事件觸發(fā)器被禁用。 如果一個(gè)錯(cuò)誤的事件觸發(fā)器禁用了數(shù)據(jù)庫讓你甚至無法刪除它,可以重啟到 單用戶模式,這樣你就能刪除它。
禁止執(zhí)行任何DDL命令:
CREATE OR REPLACE FUNCTION abort_any_command()
RETURNS event_trigger
LANGUAGE plpgsql
AS $$
BEGIN
RAISE EXCEPTION 'command % is disabled', tg_tag;
END;
$$;
CREATE EVENT TRIGGER abort_ddl ON ddl_command_start
EXECUTE FUNCTION abort_any_command();
在 SQL 標(biāo)準(zhǔn)中沒有 CREATE EVENT TRIGGER
語句。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: