Saltar al contenido

Trigger de SQL | ¿Cuándo debo usarlos?

Muchos programadores y administradores de bases de datos se preguntan cuándo deben usar triggers. Esta es una buena pregunta, ya que el uso inadecuado de triggers puede llevar a la lentitud del sistema o incluso a la caída de éste. En este post vamos a ver cuándo debemos usar el Trigger de SQL.

Este tema es complicado de entender en los salones de clases , es decir, en teoría. La razón de esto es que necesitamos ver un ejemplo práctico para darnos cuenta de su poder y versatilidad.

Índice

    Que es un trigger de sql?

    Un trigger se ejecuta cuando ocurre un evento en la base de datos, pero que de cuales eventos hablamos pues los insert, update y delete son considerados eventos, pero también podemos hacer que se ejecuten en otros momentos como cuando se crea o elimina una tabla.

    Que debes tener encuenta ?

    – Asegúrese de que el trigger no está haciendo más trabajo del necesario. Los triggers deben ser lo más simples y eficientes posible.

    – Asegúrese de que el trigger está haciendo el trabajo correcto. Los errores en los triggers pueden ser difíciles de depurar.

    – Asegúrese de que el trigger no tenga efectos secundarios no deseados. Los efectos secundarios pueden incluir actualizaciones incorrectas de la base de datos o incluso el borrado de datos.

    – Asegúrese de que el trigger está documentado correctamente. La documentacion es clave para crear un trigger que pueda ser mantenido por otras personas.

    Sintaxis

    La sintaxis básica de un trigger en SQL es la siguiente:

    CREATE TRIGGER trigger_name
    AFTER/BEFORE INSERT/UPDATE/DELETE
    ON table_name
    FOR EACH ROW
    BEGIN
        --trigger code
    END;

    Esta sintaxis esta compuesta ciertas clausulas que se explican acontinuacion:

    • «CREATE TRIGGER» indica que se está creando un nuevo trigger.
    • «trigger_name» es el nombre del trigger.
    • «AFTER/BEFORE INSERT/UPDATE/DELETE» indica cuándo se debe activar el trigger (después o antes de una inserción, actualización o eliminación) y en qué operación (inserción, actualización o eliminación)
    • «ON table_name» indica en qué tabla se activará el trigger.
    • «FOR EACH ROW» indica que el trigger se activará para cada fila afectada.
    • La sección «BEGIN … END» contiene el código que se ejecutará cuando se active el trigger.

    Cada sistema de gestion puede aplicar ligeros cambios de como crear triggers.

    Cual es la funcion de los Triggers?

    Nos permiten realizar tareas cuando se ejecutan determinados eventos en la base de datos, tales como:

    – al insertan nuevos registros en una tabla

    -si modifican o actualizan los datos de una tabla

    -cuando eliminamos un registro

    Todos los triggers se pueden aplicar antes o despues de que se ejecute el evento, y en mysql podemos especificar si queremos que se ejecute para cada registro afectado o solo una vez por instrucción SQL.

    Como crear un trigger en sql server?

    Para crear un trigger en Sql Server, necesitamos ejecutar la siguiente instrucción:

    CREATE TRIGGER trigger_name

    ON table_name

    AFTER INSERT, UPDATE, DELETE

    AS

    BEGIN

    –trigger body

    end;

    Como crear un trigger en mysql?

    Para crear un trigger en mysql, necesitamos ejecutar la siguiente instrucción:

    CREATE TRIGGER trigger_name

    AFTER INSERT ON table_name

    FOR EACH ROW

    BEGIN

    –trigger body

    end;

    ¿Esperabas ver un ejemplo de trigger? Pues no te preocupes, en el próximo post vamos a ver un ejemplo práctico de cómo usar triggers.

    En los salones de clase o en las empresas es un tema que nos llama la atencion debido al misterio que encierra su verdadero potencial, mysql y Sql Server son dos sistemas que nos permiten trabajar con estos objetos.

    Los triggers de postgresql como funcionan ?

    Los triggers en PostgreSQL son procedimientos almacenados que se ejecutan automáticamente cuando se produce un evento específico en una tabla o vista. Estos eventos pueden ser INSERT, UPDATE o DELETE. Los triggers se utilizan para mantener la integridad referencial, auditar cambios en la tabla o para realizar tareas adicionales automatizadas en respuesta a cambios en los datos.

    Los triggers se definen mediante una sentencia CREATE TRIGGER y se asocian a una tabla específica. Los procedimientos almacenados que se ejecutan en un trigger se escriben en PL/pgSQL, un lenguaje de programación similar a SQL.

    Sintaxis para crear un trigger

    La sintaxis para crear un trigger en PostgreSQL es la siguiente:

    CREATE TRIGGER trigger_name
    AFTER|BEFORE INSERT|UPDATE|DELETE
    ON table_name
    FOR EACH ROW
    EXECUTE FUNCTION function_name();
    
    • trigger_name es el nombre del trigger.
    • AFTER o BEFORE indica si el trigger se ejecutará después o antes de la acción de la tabla especificada.
    • INSERT, UPDATE, o DELETE indica la acción de la tabla que activará el trigger.
    • table_name es el nombre de la tabla a la cual se asociará el trigger.
    • FOR EACH ROW indica que el trigger se ejecutará para cada fila afectada por la acción especificada.
    • function_name es el nombre de la función que se ejecutará cuando se active el trigger.
    CRUD base de datos

    Ejemplo de como crear un trigger en postgresql

    Aquí hay un ejemplo de una función que se puede utilizar en un trigger en PostgreSQL:

    CREATE OR REPLACE FUNCTION update_product_price() RETURNS TRIGGER AS $$
    BEGIN
        NEW.price = NEW.price * 1.1;
        RETURN NEW;
    END;
    $$ LANGUAGE plpgsql;
    

    En este ejemplo, la función se llama «update_product_price» y está escrita en el lenguaje PL/pgSQL. La función toma el valor de la columna «price» de la nueva fila (denotada por «NEW») y lo multiplica por 1.1. Luego, la función devuelve la nueva fila modificada.

    Para utilizar esta función en un trigger, se puede utilizar la sintaxis que te di anteriormente:

    CREATE TRIGGER update_product_price
    BEFORE UPDATE ON products
    FOR EACH ROW
    EXECUTE FUNCTION update_product_price();
    

    Con esto cada vez que se actualice una fila de la tabla «products» se ejecutara la función update_product_price y se aumentara el precio en un 10%.

    Ejemplo para un sistema de facturación mysql o sql server

    Un ejemplo de un trigger de SQL para una tabla de factura podría ser el siguiente:

    CREATE TRIGGER update_invoice_total
    AFTER INSERT ON invoice_items
    FOR EACH ROW
    BEGIN
        UPDATE invoices
        SET total = total + NEW.price
        WHERE invoices.invoice_id = NEW.invoice_id;
    END;
    

    Este trigger se activa después de insertar una nueva fila en la tabla «invoice_items» y actualiza el total de la factura correspondiente en la tabla «invoices». El trigger utiliza la cláusula «AFTER INSERT» para especificar cuándo debe activarse y la cláusula «FOR EACH ROW» para especificar que debe ejecutarse para cada fila insertada. El cuerpo del trigger utiliza una instrucción «UPDATE» para actualizar el total de la factura en la tabla «invoices».

    Puedo recomendarte que veas nuestra Base de datos nortwind de ejemplos para que puedas crear los triggers como gustes.

    En conclusion

    los triggers son un elemento clave y muy avanzado que aplica para situaciones en la cual queremos validar los datos o hacer cambios sobre ellos, pero debemos ser cautelosos al momento de usarlos ya que pueden afectar el rendimiento de la base de datos.

    Espero haber aclarado un poco este concepto y si tienen alguna pregunta no olviden escribir en los comentarios

    Hasta entonces, ¡hasta la próxima!

    😀 bye!!!