CREATE EVENT TRIGGER

CREATE EVENT TRIGGER — definir un nuevo disparador de eventos (event trigger)

Synopsis

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 disparador de eventos. Cada vez que ocurre el evento designado y se cumple la condición WHEN asociada al disparador, si la hay, se ejecutará la función del disparador. Para una introducción general a los disparadores de eventos, consulta la Chapter 38. El usuario que crea un disparador de eventos se convierte en su propietario.

Parámetros

name

El nombre que se le dará al nuevo disparador. Este nombre debe ser único dentro de la base de datos.

event

El nombre del evento que dispara la llamada a la función dada. Consulta la Section 38.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 disparador a un subconjunto de los casos en los que es compatible. Actualmente, la única variable de filtro (filter_variable) admitida es TAG.

filter_value

Una lista de valores para la variable de filtro (filter_variable) asociada para los cuales debe dispararse el disparador. Para TAG, esto significa una lista de etiquetas de comando (por ejemplo, 'DROP FUNCTION').

function_name

Una función proporcionada por el usuario que se declara como que no toma ningún argumento y 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 está obsoleto.

Notas

Solo los superusuarios pueden crear disparadores de eventos.

Los disparadores de eventos están desactivados en el modo de usuario único (consulta la postgres), así como cuando event_triggers se establece en false. Si un disparador de eventos erróneo desactiva la base de datos hasta el punto de que ni siquiera puedes eliminar el disparador, reinicia con event_triggers establecido en false para desactivar temporalmente los disparadores de eventos, o en modo de usuario único, y podrás hacerlo.

Ejemplos

Prohibir la ejecución de cualquier comando DDL:

CREATE OR REPLACE FUNCTION abort_any_command()
  RETURNS event_trigger
 Leone plpgsql
  AS $$
BEGIN
  RAISE EXCEPTION 'el comando % está desactivado', tg_tag;
END;
$$;

CREATE EVENT TRIGGER abort_ddl ON ddl_command_start
   EXECUTE FUNCTION abort_any_command();

Compatibilidad

No existe una instrucción CREATE EVENT TRIGGER en el estándar SQL.

Consulte también

ALTER EVENT TRIGGER, DROP EVENT TRIGGER, CREATE FUNCTION