CREAR ACTIVADOR DE EVENTO: defina un nuevo activador de evento
Sinopsis
CREATE EVENT TRIGGER name ON event [ WHEN filter_variable IN (filter_value [, ... ]) [ AND ... ] ] EXECUTE { FUNCTION | PROCEDURE } function_name()
Descripción
CREATE EVENT TRIGGER
crea un nuevo activador de eventos. Siempre que ocurra el evento designado y el WHEN
condición asociada con el disparador, si se cumple alguna, se ejecutará la función del disparador. Para obtener una introducción general a los desencadenantes de eventos, consulte Capítulo 39. El usuario que crea un activador de eventos se convierte en su propietario.
Parámetros
name
-
El nombre que se le dará al nuevo disparador. Este nombre debe ser exclusivo dentro de la base de datos.
event
-
El nombre del evento que desencadena una llamada a la función dada. Ver Sección 39.1 para obtener más información sobre los nombres de los eventos.
filter_variable
-
El nombre de una variable utilizada para filtrar eventos. Esto hace posible restringir el disparo del gatillo a un subconjunto de los casos en los que es compatible. Actualmente el único soportado
filter_variable
esTAG
. filter_value
-
Una lista de valores para los asociados
filter_variable
para lo cual debe disparar el gatillo. ParaTAG
, esto significa una lista de etiquetas de comando (p. ej.,'DROP FUNCTION'
). function_name
-
Una función proporcionada por el usuario que se declara sin argumentos y que devuelve el tipo
event_trigger
.En la sintaxis de
CREATE EVENT TRIGGER
, las palabras claveFUNCTION
yPROCEDURE
son equivalentes, pero la función referenciada debe ser en cualquier caso una función, no un procedimiento. El uso de la palabra clavePROCEDURE
aquí es histórico y obsoleto.
Notas
Solo los superusuarios pueden crear activadores de eventos.
Los activadores de eventos están deshabilitados en el modo de usuario único (ver postgres). Si un activador de evento erróneo deshabilita la base de datos tanto que ni siquiera puede soltar el activador, reinicie en modo de usuario único y podrá hacerlo.
Ejemplos de
Prohibir la ejecución de cualquier DDL mando:
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();
Compatibilidad
No hay CREATE EVENT TRIGGER
declaración en el estándar SQL.
Ver también
ALTERAR EL DISPARADOR DE EVENTO, SOLTAR EL DISPARADOR DE EVENTO, CREAR FUNCIÓN
Anterior |
Hasta | próximo |
CREAR DOMINIO | Hogar | CREAR EXTENSIÓN |