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 es TAG.

filter_value

Una lista de valores para los asociados filter_variable para lo cual debe disparar el gatillo. Para TAG, 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 clave FUNCTION y PROCEDURE son equivalentes, pero la función referenciada debe ser en cualquier caso una función, no un procedimiento. El uso de la palabra clave PROCEDURE 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