Disparadores / Triggers
Los disparadores (triggers) en MySQL
son objetos que se utilizan para
ejecutar una acción automáticamente
en respuesta a un evento específico
que ocurre en una tabla de la base de
datos. Los disparadores se pueden
utilizar para realizar tareas como
validar datos, actualizar registros,
realizar auditorías, entre otras.
• Los disparadores se definen utilizando la
sentencia CREATE TRIGGER y se activan
automáticamente cuando se produce un
evento específico en una tabla, como una
inserción, actualización o eliminación de
registros. Los disparadores se pueden
activar antes o después de que se
produzca el evento.
La sintaxis básica para crear un disparador en
MySQL es la siguiente:
CREATE TRIGGER nombre_disparador
{BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON nombre_tabla
FOR EACH ROW
BEGIN
-- Sentencias SQL
END;
Donde nombre_disparador es el nombre del disparador que se desea
crear,
BEFORE o AFTER indica si el disparador se activa antes o después del
evento,
INSERT, UPDATE o DELETE indica el tipo de evento que activa el
disparador, nombre_tabla es el nombre de la tabla en la que se activa
el disparador,
FOR EACH ROW indica que el disparador se activa para cada registro
afectado por el evento, BEGIN y END delimitan el cuerpo del
disparador, y Sentencias SQL son las sentencias que se ejecutan dentro
del disparador.
Es importante destacar que los
disparadores se pueden utilizar para
realizar acciones complejas y que pueden
afectar el rendimiento de la base de datos.
Por lo tanto, es importante utilizarlos con
precaución y asegurarse de que no
afecten negativamente el rendimiento de
la base de datos.
CREATE TRIGGER nombre_disparador
AFTER DELETE ON nombre_tabla
FOR EACH ROW
BEGIN
-- Sentencias SQL
END;
CREATE TRIGGER eliminar_registro
AFTER DELETE ON tabla1
FOR EACH ROW
BEGIN
DELETE FROM tabla2 WHERE id = OLD.id;
END;
La cláusula OLD en los disparadores de MySQL se refiere a los valores
antiguos de las columnas de la tabla que se está modificando. La
cláusula OLD se utiliza en los disparadores BEFORE UPDATE y BEFORE
DELETE para hacer referencia a los valores antiguos de las columnas
antes de que se realice la actualización o eliminación.
Por ejemplo, si se tiene una tabla llamada clientes con una columna
llamada nombre y se desea crear un disparador que registre los
cambios en la columna nombre, se puede utilizar la cláusula OLD para
hacer referencia al valor antiguo de la columna nombre antes de la
actualización. La sintaxis para crear un disparador que registre los
cambios en la columna nombre sería la siguiente:
CREATE TRIGGER registro_cambios
BEFORE UPDATE ON clientes
FOR EACH ROW
BEGIN
IF OLD.nombre <> NEW.nombre THEN
INSERT INTO registro_cambios (id_cliente, nombre_antiguo,
nombre_nuevo)
VALUES (OLD.id, OLD.nombre, NEW.nombre);
END IF;
END;
clausula row en disparadores mysql
La cláusula ROW en los disparadores de
MySQL se utiliza para indicar que el
disparador se activa para cada fila afectada
por el evento. Es decir, cuando se utiliza la
cláusula FOR EACH ROW en la definición
del disparador, se está indicando que el
disparador se activará para cada fila
afectada por el evento que lo dispara.
CREATE TRIGGER registro_cambios
BEFORE UPDATE ON clientes
FOR EACH ROW
BEGIN
IF OLD.nombre <> NEW.nombre THEN
INSERT INTO registro_cambios (id_cliente, nombre_antiguo,
nombre_nuevo)
VALUES (OLD.id, OLD.nombre, NEW.nombre);
END IF;
END;
¿Qué información puedo obtener utilizando la
cláusula ROW en un disparador de MySQL
La cláusula ROW en un disparador de MySQL permite obtener
información sobre cada fila afectada por el evento que activa el
disparador. Al utilizar la cláusula FOR EACH ROW en la definición del
disparador, se indica que el disparador se activará para cada fila
afectada por el evento.
De esta manera, se puede hacer referencia a los valores antiguos y
nuevos de las columnas de la tabla utilizando las palabras clave OLD y
NEW, respectivamente. Por ejemplo, se puede crear un disparador
BEFORE UPDATE que se active para cada fila afectada por el evento de
actualización utilizando la cláusula FOR EACH ROW.
Disparadores.pptx

Disparadores.pptx

  • 1.
  • 2.
    Los disparadores (triggers)en MySQL son objetos que se utilizan para ejecutar una acción automáticamente en respuesta a un evento específico que ocurre en una tabla de la base de datos. Los disparadores se pueden utilizar para realizar tareas como validar datos, actualizar registros, realizar auditorías, entre otras.
  • 3.
    • Los disparadoresse definen utilizando la sentencia CREATE TRIGGER y se activan automáticamente cuando se produce un evento específico en una tabla, como una inserción, actualización o eliminación de registros. Los disparadores se pueden activar antes o después de que se produzca el evento.
  • 4.
    La sintaxis básicapara crear un disparador en MySQL es la siguiente: CREATE TRIGGER nombre_disparador {BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON nombre_tabla FOR EACH ROW BEGIN -- Sentencias SQL END;
  • 5.
    Donde nombre_disparador esel nombre del disparador que se desea crear, BEFORE o AFTER indica si el disparador se activa antes o después del evento, INSERT, UPDATE o DELETE indica el tipo de evento que activa el disparador, nombre_tabla es el nombre de la tabla en la que se activa el disparador, FOR EACH ROW indica que el disparador se activa para cada registro afectado por el evento, BEGIN y END delimitan el cuerpo del disparador, y Sentencias SQL son las sentencias que se ejecutan dentro del disparador.
  • 6.
    Es importante destacarque los disparadores se pueden utilizar para realizar acciones complejas y que pueden afectar el rendimiento de la base de datos. Por lo tanto, es importante utilizarlos con precaución y asegurarse de que no afecten negativamente el rendimiento de la base de datos.
  • 7.
    CREATE TRIGGER nombre_disparador AFTERDELETE ON nombre_tabla FOR EACH ROW BEGIN -- Sentencias SQL END;
  • 8.
    CREATE TRIGGER eliminar_registro AFTERDELETE ON tabla1 FOR EACH ROW BEGIN DELETE FROM tabla2 WHERE id = OLD.id; END;
  • 9.
    La cláusula OLDen los disparadores de MySQL se refiere a los valores antiguos de las columnas de la tabla que se está modificando. La cláusula OLD se utiliza en los disparadores BEFORE UPDATE y BEFORE DELETE para hacer referencia a los valores antiguos de las columnas antes de que se realice la actualización o eliminación. Por ejemplo, si se tiene una tabla llamada clientes con una columna llamada nombre y se desea crear un disparador que registre los cambios en la columna nombre, se puede utilizar la cláusula OLD para hacer referencia al valor antiguo de la columna nombre antes de la actualización. La sintaxis para crear un disparador que registre los cambios en la columna nombre sería la siguiente:
  • 10.
    CREATE TRIGGER registro_cambios BEFOREUPDATE ON clientes FOR EACH ROW BEGIN IF OLD.nombre <> NEW.nombre THEN INSERT INTO registro_cambios (id_cliente, nombre_antiguo, nombre_nuevo) VALUES (OLD.id, OLD.nombre, NEW.nombre); END IF; END;
  • 11.
    clausula row endisparadores mysql La cláusula ROW en los disparadores de MySQL se utiliza para indicar que el disparador se activa para cada fila afectada por el evento. Es decir, cuando se utiliza la cláusula FOR EACH ROW en la definición del disparador, se está indicando que el disparador se activará para cada fila afectada por el evento que lo dispara.
  • 12.
    CREATE TRIGGER registro_cambios BEFOREUPDATE ON clientes FOR EACH ROW BEGIN IF OLD.nombre <> NEW.nombre THEN INSERT INTO registro_cambios (id_cliente, nombre_antiguo, nombre_nuevo) VALUES (OLD.id, OLD.nombre, NEW.nombre); END IF; END;
  • 13.
    ¿Qué información puedoobtener utilizando la cláusula ROW en un disparador de MySQL La cláusula ROW en un disparador de MySQL permite obtener información sobre cada fila afectada por el evento que activa el disparador. Al utilizar la cláusula FOR EACH ROW en la definición del disparador, se indica que el disparador se activará para cada fila afectada por el evento. De esta manera, se puede hacer referencia a los valores antiguos y nuevos de las columnas de la tabla utilizando las palabras clave OLD y NEW, respectivamente. Por ejemplo, se puede crear un disparador BEFORE UPDATE que se active para cada fila afectada por el evento de actualización utilizando la cláusula FOR EACH ROW.