CREATE EVENT TRIGGER — define um novo gatilho de evento
CREATE EVENT TRIGGERnomeONevento[ WHENvariável_filtroIN (valor_filtrado[, ... ]) [ AND ... ] ] EXECUTE { FUNCTION | PROCEDURE }nome_da_função()
O comando CREATE EVENT TRIGGER define um novo
gatilho de evento.
Sempre que o evento designado ocorrer, e a condição
WHEN associada ao gatilho, se houver, for
satisfeita, a função de gatilho será executada.
Para obter uma introdução geral aos gatilhos de evento, veja o
Capítulo 38.
O usuário que cria o gatilho de evento torna-se seu dono.
nomeO nome a ser dado ao novo gatilho. Este nome deve ser único no banco de dados.
eventoO nome do evento que dispara a chamada para a função especificada. Veja Seção 38.1 para obter mais informações sobre nomes de eventos.
variável_filtro
O nome da variável usada para filtrar eventos.
Permite restringir o disparo do gatilho a um subconjunto dos
casos em que tem suporte.
No momento, a única
variável_filtro
com suporte é TAG.
valor_filtrado
Uma lista de valores para a
variável_filtro
associada, para os quais o gatilho deve disparar.
Para TAG, isto significa uma lista de etiquetas
de comando (por exemplo, 'DROP FUNCTION').
nome_da_função
O nome da função fornecida pelo usuário, declarada como não
recebendo nenhum argumento, e retornando o tipo de dados
event_trigger.
Na sintaxe do comando CREATE EVENT TRIGGER,
as palavras-chave FUNCTION e
PROCEDURE são equivalentes, mas a função
referenciada deve, em qualquer caso, ser uma função, e não um
procedimento.
O uso da palavra-chave PROCEDURE aqui é
histórico e em obsolescência.
Somente os superusuários podem criar gatilhos de evento.
Os gatilhos de evento são desativados no modo mono-usuário
(veja postgres) bem como quando
event_triggers está definido como
false.
Se um gatilho de evento com erro desativar o banco de dados a tal
ponto que não se consiga nem mesmo remover o gatilho, o banco de dados
deverá ser reiniciado com event_triggers
definido como false para desativar temporariamente
os gatilhos de evento, ou no modo de mono-usuário, para se conseguir
removê-lo.
Proibir a execução de qualquer comando de DDL:
CREATE OR REPLACE FUNCTION abort_any_command() RETURNS event_trigger LANGUAGE plpgsql AS $$ BEGIN RAISE EXCEPTION 'o comando % está desativado', tg_tag; END; $$; CREATE EVENT TRIGGER abort_ddl ON ddl_command_start EXECUTE FUNCTION abort_any_command();
Não existe o comando CREATE EVENT TRIGGER
no padrão SQL.