Para poder ejecutar nuestro trigger se necesitan dos instrucciones: la primera que declara la función y prepara el enlace con la biblioteca compartida al backend, y la otra que declare a dicha función como trigger dentro de una acción determinada.
Para declarar la función a enlazar debemos, dentro de nuestra terminal de PostgreSQL (psql), crear una función dentro de PostgreSQL, con esto agregará dicha función a su tabla de pg_proc y podrá ser reutilizada sobre cualquier acción en nuestra base de datos.
La sentencia a ejecutar para nuestro caso sería:
mydb=> CREATE FUNCTION create_script()
RETURNS opaque
AS '/ruta/a/replica.o'
LANGUAGE 'c';
|
Ahora que tenemos nuestra función definida dentro de PostgreSQL, podemos hacer uso de ella para cuando la necesitemos. El problema ahora es que necesitamos hacer uso de ella de manera transparente y cuando suceda un evento específico. Para ellos ejecutamos una segunda sentencia donde declaramos la creación de un trigger. La definición de los triggers se almacenan en la tabla pg_trigger.
Para nuestro ejemplo se haría lo siguiente:
mydb=> CREATE TRIGGER at_insert_on_venta AFTER
INSERT ON venta
FOR EACH ROW EXECUTE PROCEDURE
create_script('/home/dba/replica.sql');
|
Aquí podemos observar que podemos tener dos tipos de trigger en cuanto a su momento de ejecución: antes y después del evento. Los trigger ejecutados antes del evento esencialmente sirven para prevenir y verificar ciertos estados previos al evento en la base de datos, y los triggers ejecutados de manera posterior al evento son para llevar a cabo ciertas tareas en cascada.