PostgreSQL – Activador

Un disparador de PostgreSQL es una función que se invoca automáticamente cada vez que ocurre un evento asociado con una tabla. Un evento podría ser cualquiera de los siguientes: INSERTAR , ACTUALIZAR , ELIMINAR o TRUNCAR .

Un disparador es una función especial definida por el usuario asociada con una tabla. Para crear un nuevo disparador, primero debe definir una función de disparador y luego vincular esta función de disparador a una tabla. La diferencia entre un disparador y una función definida por el usuario es que un disparador se invoca automáticamente cuando ocurre un evento.

PostgreSQL proporciona dos tipos principales de activadores:

  1. Desenstringdores de nivel de fila
  2. Disparadores a nivel de declaración

Las diferencias entre los dos tipos son cuántas veces se invoca el disparador y en qué momento. Por ejemplo, si emite una instrucción UPDATE que afecta a 20 filas, el activador de nivel de fila se invocará 20 veces, mientras que el activador de nivel de instrucción se invocará 1 vez.

Puede especificar si el disparador se invoca antes o después de un evento. Si el activador se invoca antes de un evento, puede omitir la operación de la fila actual o incluso cambiar la fila que se está actualizando o insertando. En caso de que el disparador se invoque después del evento, todos los cambios están disponibles para el disparador.

Los disparadores son útiles en caso de que varias aplicaciones accedan a la base de datos y desee mantener la funcionalidad cruzada dentro de la base de datos que se ejecuta automáticamente cada vez que se modifican los datos de la tabla. Por ejemplo, si desea mantener el historial de datos sin requerir que la aplicación tenga lógica para verificar cada evento, como INSERTAR o ACTUALIZAR.

También puede usar activadores para mantener reglas de integridad de datos complejas que no puede implementar en ningún otro lugar, excepto en el nivel de la base de datos. Por ejemplo, cuando se agrega una nueva fila a la tabla de clientes, también se deben crear otras filas en las tablas de bancos y créditos.

El principal inconveniente de usar un disparador es que debe saber que el disparador existe y comprender su lógica para descubrir los efectos cuando cambian los datos.

Aunque PostgreSQL implementa el estándar SQL, los disparadores en PostgreSQL tienen algunas características específicas como las siguientes:

  • TRUNCAR

crear una nueva tabla empleados

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

empleado_auditorias

CREATE TABLE AUDIT(
   EMP_ID INT NOT NULL,
   ENTRY_DATE TEXT NOT NULL
);
CREATE OR REPLACE FUNCTION auditlog() RETURNS TRIGGER AS $example_table$
   BEGIN
      INSERT INTO AUDIT(EMP_ID, ENTRY_DATE) VALUES (new.ID, current_timestamp);
      RETURN NEW;
   END;
$example_table$ LANGUAGE plpgsql;

La función inserta el apellido anterior en la tabla employee_audits , incluida la identificación del empleado, el apellido y la hora del cambio si cambia el apellido de un empleado. En segundo lugar, vincule la función de activación a la tabla de empleados. El nombre del activador es last_name_changes . Antes de que se actualice el valor de la columna last_name , la función de activación se invoca automáticamente para registrar los cambios.

 CREATE TRIGGER example_trigger AFTER INSERT ON COMPANY
FOR EACH ROW EXECUTE PROCEDURE auditlog();

empleados

INSERT INTO COMPANY (ID, NAME, AGE, ADDRESS, SALARY)
VALUES (1, 'Raju', 25, 'New-Delhi', 33000.00 );

empleados

SELECT * FROM COMPANY;

Producción:

Publicación traducida automáticamente

Artículo escrito por RajuKumar19 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *