triggers pl sql tutorial with example programs
Aprenda todo sobre los disparadores en PL SQL, sus tipos, uso y ventajas:
En el Transacciones PL SQL tutorial de la Serie PL / SQL , hemos aprendido sobre las sentencias COMMIT, ROLLBACK y SAVEPOINTS.
En este artículo, exploraremos los activadores en PL SQL y sus ventajas, tipos y uso. Discutiremos cómo crear, desencadenar, habilitar y deshabilitar desencadenadores PL / SQL con la ayuda de programas de ejemplo.
¡Comencemos con la discusión!
Lo que vas a aprender:
Desencadenadores en PL / SQL
Un programa almacenado que se activa por defecto o por algunos eventos se denomina disparador.
Un disparador se ejecuta debido a las siguientes circunstancias que se enumeran a continuación:
- Mediante una declaración DDL (lenguaje de definición de datos) como DROP, ALTER o CREATE.
- Mediante una declaración DML (lenguaje de manipulación de datos) como UPDATE, INSERT o DELETE.
- Mediante una acción de base de datos como APAGAR, INICIAR, CERRAR SESIÓN e INICIAR SESIÓN.
Se puede establecer un desencadenador en un esquema, vista o base de datos que tenga un evento adjunto.
Ventajas de los disparadores
Estos se enumeran a continuación:
- Capacidad para hacer cumplir la integridad referencial.
- Capacidad de seguimiento.
- Capacidad para registrar y retener datos al acceder a tablas.
- Posibilidad de detener transacciones que no son válidas.
- Capacidad para hacer cumplir las funciones de seguridad.
- Capacidad para producir valores de columna derivados de forma predeterminada.
Usos de disparadores
Estos se enumeran a continuación:
- Evita transacciones indebidas.
- Acumula información sobre el uso de la mesa.
- Supervise la información crítica.
Tipos de disparadores en PL / SQL
Los disparadores se pueden clasificar en función de los parámetros. Los tipos de desencadenantes se enumeran a continuación:
# 1) Categorización en el nivel de activación.
- Disparador de nivel FILA: Se ejecuta para cada registro que se actualizó mediante una declaración DML.
- DECLARACIÓN Nivel de activación: Se ejecuta solo una vez por la declaración del evento.
# 2) Categorización en el momento del disparo.
- ANTES de disparar: Se ejecuta antes del evento específico que ha tenido lugar.
- DESPUÉS del gatillo: Se ejecuta después del evento específico que ha tenido lugar.
- EN LUGAR DE gatillo: Es un tipo especial de disparador y se ejecuta para cada registro que se actualizó mediante una declaración DML.
# 3) Categorización del evento desencadenante.
- Activador DML: Se ejecuta si se realiza un evento DML como UPDATE, INSERT o DELETE.
- Disparador DDL: Se ejecuta si se realiza un evento DDL como DROP, ALTER o CREATE.
- Activador DATABASE: Se ejecuta si se ha producido un evento de base de datos como SHUTDOWN, STARTUP, LOGOFF y LOGON.
Crear disparadores
Sintaxis para crear un disparador:
|_+_|Aquí,
- CREAR (O REEMPLAZAR) TRIGGER trigger_n - Esto es para crear, reemplazar o actualizar un disparador que tiene un nombre como trigger_n.
- DESPUÉS - Esto es para determinar el momento en que se disparará el gatillo. INSTEAD OF es para crear un disparador que tenga una vista.
- ELIMINAR - Esto es para ejecutar las acciones DML.
- (OF column_n) - Esto es para mencionar el nombre de la columna que se modificará.
- (ON table_n) - Esto es para mencionar el nombre de la tabla que se adjunta al disparador.
- (REFERENCIA ANTIGUO COMO NUEVO COMO n) - Esto es para hacer referencia a los valores nuevos y antiguos mediante la declaración DML como ACTUALIZAR, INSERTAR o ELIMINAR.
- (POR CADA FILA) - Esto determina un activador a nivel de fila, es decir, el activador se activará para cada fila que se modifique; de lo contrario, el activador se activará solo una vez cuando se ejecute la instrucción SQL, lo que se conoce como activador a nivel de tabla.
- CUANDO (condición) - Esto proporciona una condición para las filas para las que se ejecutará el disparador. Esto es aplicable solo a los desencadenadores de nivel de fila.
Consideremos de nuevo una tabla que se llama ESTUDIANTE .
Creemos ahora un disparador a nivel de fila para la tabla ESTUDIANTE que sería ejecutado por la instrucción DML como ACTUALIZAR, INSERTAR o ELIMINAR en esa tabla. El disparador calculará y mostrará la diferencia de edad entre los valores actuales y anteriores.
Implementación de código para la creación de disparadores:
|_+_|Salida del código anterior:
El código anterior tiene algunas características importantes. Se enumeran a continuación:
- Para un disparador de nivel de tabla, las direcciones VIEJA y NUEVA no están disponibles. Podemos usar estas referencias para disparadores de nivel de registro.
- Si queremos aplicar otra consulta en el mismo activador, entonces necesitamos usar la palabra clave AFTER como un activador que puede modificar una tabla nuevamente solo después de que las modificaciones anteriores se hayan aplicado correctamente.
- El disparador mencionado anteriormente se ejecuta antes de cualquier acción DELETE, UPDATE o INSERT en la tabla. Sin embargo, también podemos diseñar un disparador que se active en una sola operación ( por ejemplo, AFTER INSERT que ejecutará el disparador cada vez que se inserte un registro con la ayuda de la operación INSERT en la tabla).
Activación de activadores en PL SQL
Para disparar el activador anterior, necesitamos realizar cualquier operación DML como DELETE, INSERT o UPDATE en la mesa. Insertemos nuevamente algunos valores en la tabla de Estudiantes con la ayuda de la siguiente consulta:
|_+_|Una vez que se completa la operación INSERT en la tabla Student, el disparador age_changes se ejecuta.
La salida del código de consulta:
Dado que se crea un nuevo registro y la edad anterior no está disponible, la edad anterior y Diferencia de edad el cálculo es nulo en la salida anterior.
Ahora vamos modificar un registro con la instrucción UPDATE con la ayuda de la siguiente consulta:
|_+_|Una vez que se completa la operación ACTUALIZAR en la tabla de Estudiantes, el disparador age_changes se ejecuta.
El resultado de la consulta anterior:
Cláusula NUEVA Y VIEJA
Se utiliza una nueva cláusula para almacenar el nuevo valor de las columnas de la tabla para la ejecución del disparador. Se utiliza en disparadores de nivel récord. Se utiliza una cláusula antigua para almacenar el valor antiguo de las columnas de la tabla para la ejecución del disparador. También se utiliza en disparadores de nivel récord.
Por tanto, la cláusula nueva y antigua se utiliza para mantener y hacer referencia a los valores nuevos y antiguos dentro de un cuerpo de activación.
Gatillo compuesto
Se utiliza un disparador compuesto para definir las operaciones para todos los puntos de tiempo dentro del cuerpo del disparador. Proporciona la posibilidad de fusionar todas las acciones en diferentes momentos dentro de un cuerpo de activación.
Los diversos puntos de cronometraje se enumeran a continuación:
- DESPUÉS nivel DECLARACIÓN
- ANTES del nivel FILA
- DESPUÉS del nivel de FILA
- Nivel ANTES DE DECLARACIÓN
Deshabilitar y habilitar disparador
Podemos habilitar y deshabilitar un disparador con la ayuda de una instrucción DDL ALTER.
Sintaxis:
|_+_|Aquí, trigger_n es el nombre del disparador que queremos habilitar o deshabilitar.
Ahora deshabilitemos el disparador con la ayuda de la siguiente consulta:
|_+_|La salida del código de consulta:
Ahora habilitemos el mismo disparador con la ayuda de la siguiente consulta:
|_+_|La salida del código de consulta:
Preguntas y respuestas frecuentes
P # 1) ¿Cuántos tipos de disparadores existen en PL SQL?
Responder: Hay dos tipos de disparadores en PL / SQL. Son desencadenantes a nivel de fila y desencadenantes a nivel de declaración.
P # 2) ¿Qué tipo de disparador utiliza los calificadores antiguos y nuevos?
diferencia entre las pruebas de carga y rendimiento
Responder: Los calificadores antiguos y nuevos solo se pueden usar con desencadenadores de nivel de fila. No son compatibles con los activadores a nivel de declaración.
P # 3) ¿Cuál es la diferencia entre disparar nuevo y disparar antiguo?
Responder: Un nuevo activador proporciona una lista de nuevas versiones de los objetos de registro. Un disparador antiguo proporciona una lista de versiones antiguas de los objetos de registro.
P # 4) ¿Qué es un disparador de nivel de fila en PL SQL?
Responder: Un disparador de nivel de fila se activa para una fila solo una vez debido a un evento. Por ejemplo, si la eliminación se considera un evento desencadenante de una tabla, una declaración de eliminación afecta a dos filas, entonces el desencadenante se disparará dos veces.
P # 5) ¿Qué es un disparador? Explique con un ejemplo.
Responder: Un disparador es un procedimiento almacenado que se dispara de forma predeterminada si se produce un incidente en la base de datos. Por ejemplo, si se inserta una fila en una tabla o estamos modificando algunos valores en la tabla.
P # 6) ¿Cuáles son los desencadenantes posteriores?
Responder: Los desencadenadores posteriores se disparan después de la ejecución de una declaración DML pero antes de la confirmación en la base de datos. También es capaz de hacer retroceder su acción.
Conclusión
En este tutorial, hemos discutido algunos conceptos básicos de Triggers en PL SQL que son esenciales para usarlos durante la programación. Hemos cubierto los siguientes temas que se enumeran a continuación:
- Disparadores.
- Tipos de disparadores.
- Varias operaciones sobre disparadores.
<< PREV Tutorial | SIGUIENTE Tutorial >>