Introducción a los disparadores en PL / SQL

Los desencadenantes de la base de datos son el código PL / SQL que se ejecuta en función de un evento en la base de datos, como INSERTAR, ACTUALIZAR, Modificar, Eliminar, Iniciar sesión, Cerrar sesión, etc. Los desencadenantes de la base de datos nos ayudan a mantener los códigos SQL simples y cortos. Los desencadenantes de la base de datos son útiles para administrar todos los cambios y realizar un seguimiento de todos esos cambios utilizando Actualizar, Eliminar, Modificar, iniciar sesión, Cerrar sesión, etc. en la Base de datos, los esquemas de la Base de datos y sus tablas.

Tenemos 3 tipos de disparadores de DB:

1. DML (Lenguaje de manipulación de datos): los activadores DML se ejecutan en INSERTAR, ACTUALIZAR Y ELIMINAR en las tablas.

2. DDL (Lenguaje de definición de datos): este activador se ejecuta en Crear, Modificar, Eliminar, Analizar, Auditoría, Conceder, etc.

3. Evento de base de datos: ejecución de desencadenantes de eventos de base de datos basados ​​en LOGON, LOGOFF, Suspender, inicio de base de datos, cierre de base de datos y otros errores de base de datos.

Aquí hay una característica más de los desencadenadores DB:

Un desencadenador de base de datos: es un código PL / SQL vinculado a una vista de tabla o evento de base de datos.
Se ejecuta en función de la actividad de la base de datos

  • Antes / Después, INSERTAR, ACTUALIZAR, BORRAR.
  • Ejecutado una vez por eventos desencadenantes o una vez por fila afectada por el desencadenante.

Ejecutar en función del inicio / apagado / error del sistema / apagado de carga de datos.

¿Cómo crear disparadores en PL / SQL?

Estos son los siguientes pasos para crear disparadores en PL / SQL

1. Disparadores DML

Este disparador se divide además en dos tipos:

  • Después de disparadores / Para disparadores
  • En lugar de disparadores

DESPUÉS de disparar disparos después de disparar la acción. Las declaraciones DELETE, UPDATE e INSERT son un ejemplo de disparadores After.
INSTEAD Of triggers actúa en lugar de la acción. Las declaraciones DELETE, UPDATE e INSERT también forman parte de ella.

Ejemplo:

Utilizaremos las tablas Employee y EmployeeAudit para nuestros ejemplos.

Script SQL para crear una tabla de empleados:

CREATE TABLE Employee
(
Id int Primary Key,
Name nvarchar(30),
Salary int,
Gender nvarchar(10),
DepartmentId int
)
Insert data into Employee table
Insert into Employee values (1, 'Prakash', 5000, 'Male', 3)
Insert into Employee values (2, 'Robert', 3400, 'Male', 2)
Insert into Employee values (3, 'Anji', 6000, 'Female', 1)

Mesa de empleados

Script SQL para crear la tabla EmployeeAudit:

CREATE TABLE EmployeeAudit
(
Id int identity(1, 1) primary key,
AuditData nvarchar(1000)
)

capturaremos el ID y la fecha y hora cada vez que se agregue un nuevo empleado en la tabla de Auditoría de empleado. Este es el programa más fácil de definir DESPUÉS DEL DISPARADOR para el evento INSERT.

2. Disparadores DDL

Se utiliza principalmente para evitar cambios particulares en el esquema de su base de datos.

Sintaxis

CREATE TRIGGER trigger_name
ON (DATABASE | ALL SERVER)
(WITH ddl_trigger_option) FOR (event_type | event_group )
AS (sql_statement)

trigger_name es para especificar el nombre definido del activador después de las palabras clave CREATE TRIGGER. Además, no necesita especificar un esquema de base de datos porque no está relacionado con una tabla o vista de base de datos real.

Base de datos | All Server: si el disparador se dispara en los eventos con ámbito de servidor, entonces podemos usar ALL SERVER. Use DATABASE si el desencadenante se dispara en eventos con ámbito de base de datos

ddl_trigger_option: especifica la cláusula ENCRYPTION y / o EXECUTE AS.

tipo_evento | event_group: event_group es un grupo de eventos event_type como DDL_TABLE_EVENTS & Event_type indica un evento DDL que hace que se active el desencadenador como ALTER_TABLE, CREATE_TABLE, etc.

Ejemplo:

Activa la ejecución en respuesta al evento CREATE_TABLE DDL.

CREATE TRIGGER MyFirstTrigger
ON Database
FOR CREATE_TABLE
AS
BEGIN
Print 'New table created'
END

Compruebe si el activador se ha creado en la carpeta de activador de la base de datos y, si no lo obtiene, actualice la carpeta (activador de la base de datos).

3. Evento de base de datos

Se puede usar para cualquier evento de base de datos como LOGON, LOGOFF, Suspender, Inicio de base de datos, Cierre de base de datos

Sintaxis:

CREATE (OR REPLACE) TRIGGER trigger_name
(BEFORE | AFTER) (database_event) ON (DATABASE | SCHEMA)
DECLARE
…some code…
END;

trigger_name es para especificar el nombre definido del activador después de las palabras clave CREATE TRIGGER.

El evento database_event ocurre básicamente en bases de datos como cerrar sesión, iniciar sesión, apagar, etc. Podemos seleccionar qué base de datos o esquema funcionará este activador.

Ejemplo: desencadenador de cierre de sesión

Aquí podemos demostrar el desencadenador de eventos de la base de datos LOGOFF. Este activador creará un registro en una tabla (cierre de sesión) cuando alguien se desconecte.
Este disparador registrará el nombre del usuario y el momento de la desconexión.

Crear una tabla de cierre de sesión:

create table logoff_table (
who varchar2(30),
when date
);

Crear un disparador de cierre de sesión:

create trigger trg_logoff
before logoff on database
begin
insert into logoff_table values(sys_context('userenv', 'session_user'), sysdate);
end;
/

Aquí en el disparador anterior, hemos creado Tigger para monitorear el cierre de sesión de cualquier usuario. Este activador se ejecutará después del cierre de sesión de los usuarios de la base de datos. La tabla de cierre de sesión almacenará algunos detalles del Nombre de usuario y es el momento de cierre de sesión (Puede decidir los detalles según el requisito).

De la misma manera, podemos crear otro disparador que monitoreará y almacenará los Detalles de inicio de sesión para cualquier Base de datos en particular. Los desencadenantes de eventos de la base de datos son útiles para solucionar problemas.
Todos los nombres de tablas son específicos de los requisitos, podemos cambiar sus nombres según los requisitos.

Ventaja de disparadores en PL / SQL

  • Bueno para pistas de auditoría.
  • Bueno para manipular datos.
  • Hacer cumplir esquemas de seguridad complejos.
  • Hacer cumplir las reglas comerciales.
  • Prevenir cambios en la base de datos y el esquema.
  • El código PL / SQL es más corto usando disparadores.
  • Realice un seguimiento de los cambios en la base de datos, el esquema y las tablas de base de datos.
  • Administrar registros de acciones en la Base de datos es útil para la resolución de problemas.
  • No es necesario verificar los cambios en la base de datos manualmente, el desencadenante siempre toma medidas por sí mismo en un evento en particular.

Conclusión

Aquí está este capítulo, hemos aprendido sobre tipos de desencadenantes como DDL, DML y desencadenantes de eventos de base de datos. También hemos aprendido que un disparador DDL se puede usar para INSERTAR, ACTUALIZAR, BORRAR, etc. Las declaraciones y los disparadores DML están diseñados para Crear, Modificar, Eliminar, etc., dentro de las tablas de la Base de datos, pero los disparadores de eventos de la Base de datos funcionan cuando hay un Logon Logoff, Suspender, acción de inicio de la base de datos realizada en la base de datos.

La sintaxis de cada activador es fácil de entender y se puede convertir fácilmente en código PL / SQL. El programa PL / SQL, como el cierre de sesión activado, ha proporcionado una visión general de cómo funcionará el desencadenador de la base de datos en caso de que un usuario cierre la sesión de su base de datos. En DML Trigger, hemos demostrado cómo DESPUÉS de Trigger funcionará una vez que haya una nueva entrada de cualquier nuevo empleado. Los desencadenadores DDL son útiles para evitar cambios particulares en la base de datos y el esquema.

Artículos recomendados

Esta es una guía de disparadores en PL / SQL. Aquí discutimos cómo crear disparadores en PL / SQL con ejemplos y ventajas. También puede consultar el siguiente artículo.

  1. Cursores en PL / SQL
  2. Sentencia CASE en PL / SQL
  3. ¿Qué es PL / SQL?
  4. Comandos PL / SQL
  5. Clave primaria vs clave externa | Principales diferencias