Un disparador de PostgreSQL es una función que se invoca automáticamente cada vez que ocurre un evento como insertar, actualizar o eliminar. PostgreSQL nos da la opción de habilitar o deshabilitar los disparadores. Un activador deshabilitado no se activa cuando se produce el evento de activación. Debemos habilitarlo para asegurarnos de que se dispare cuando ocurra el evento.
En PostgreSQL, usamos la instrucción ALTER TABLE ENABLE TRIGGER para habilitar un disparador.
Syntax: ALTER TABLE table_name ENABLE TRIGGER trigger_name | ALL;
Si analizamos la sintaxis anterior:
- Primero especificamos el nombre de la tabla asociada al disparador que queremos habilitar.
- Luego, especificamos el nombre del disparador que necesitamos usar. También podemos usar ALL para habilitar todos los disparadores que están asociados con la tabla mencionada.
Ejemplo :
Supongamos que tenemos un disparador check_fullname_before_insert que se usa para verificar si el nombre del empleado dado está vacío o no y solo se inserta cuando no está vacío.
La función checkempty relacionada con el disparador se define como:
El disparador check_fullname_before_insert se define de la siguiente manera:
En esta función, lanzamos un aviso y no devolvemos nada cuando el nombre del empleado ingresado tiene una longitud de 0, pero cuando no tiene una longitud de 0, los contenidos se insertan en la tabla.
Antes de habilitar el disparador, la tabla se ve así:
La siguiente consulta habilitará el activador en la tabla de empleados :
ALTER TABLE employees ENABLE TRIGGER check_fullname_before_insert;
Supongamos que usamos la siguiente declaración para probar el disparador:
INSERT INTO employees ( employee_id, full_name, manager_id ) VALUES (21, '', NULL);
Producción:
Cuando intentamos insertar al empleado, se activó el disparador check_fullname_before_insert y como la longitud del nombre del empleado era 0, no se insertó nada en la tabla y también se emitió un aviso.
Ahora, supongamos que tenemos múltiples disparadores con diferentes funcionalidades en la mesa de estudiantes . La siguiente consulta habilitará todos los activadores que existen en esta tabla:
ALTER TABLE students ENABLE TRIGGER ALL;
Publicación traducida automáticamente
Artículo escrito por ashutoshrathi y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA