Aprender los desencadenantes de mariadb

Aprender los desencadenantes de mariadb

Cómo usar desencadenantes en Mariadb

Un desencadenante es un procedimiento que se dispara automáticamente cuando se realiza cualquier modificación en una tabla de base de datos. No hay opción para llamar o ejecutar ningún gatillo manualmente. El objetivo principal de usar desencadenantes es mantener la integridad de las bases de datos y puede usarse con las restricciones de integridad referenciales que fuerza las reglas de integridad. En un DBMS, cuando se produce cualquier evento de inserción, actualización y eliminación, luego el procedimiento de activación asociado con la tabla efectuada se ejecutará automáticamente y realiza las acciones requeridas. Los diferentes tipos de desencadenantes son compatibles con la base de datos. Los desencadenantes se clasifican principalmente de dos maneras. Uno es antes del gatillo y otro es después del gatillo. Antes de que se llamen a los disparadores antes de que se ejecute cualquier evento en la tabla y después de que se llamen a los disparadores después de ejecutar cualquier evento en la tabla. En este tutorial se muestra cómo instala MariadB y aplica diferentes tipos de desencadenantes en el servidor de base de datos Mariadb en Ubuntu.

Instalación de mariadb:

Ejecute el comando a continuación para actualizar el sistema e instalar el servidor y el cliente mariadb.

# sudo apt-get actualización && sudo apt-get install mariadb-server mariadb-client

Tipo 'y ' y presione ENTER para completar el proceso de instalación.

Ejecute el siguiente comando para iniciar el servidor mariadb.

# sudo systemctl inicio mariadb

Verifique que el servidor funcione correctamente o no. La salida del siguiente comando mostrará el estado de detalles del servidor. La salida indica que Mariadb 10.1.30 la verión se está ejecutando.

# SUDO SYSTEMCTL ESTADO MARIADB

Ejecute el siguiente comando si desea detener el servidor. No ejecute este comando ahora.

# sudo systemctl stop mariadb

Configurar la base de datos y las tablas

Debe crear una base de datos y dos o más tablas para verificar cómo funcionan los desencadenantes. En primer lugar, ejecute el cliente MySQL para configurar la base de datos. Solicitará contraseña root para acceder al servidor de base de datos.

# sudo mysql -u root

Crear una base de datos nombrada almacenar.

> Crear tienda de base de datos;

Seleccione esta nueva base de datos:

> Use la tienda;

Crear tres tablas en almacenar base de datos para aplicar acciones de activación en estos. Aquí, productos, stock y stock_add Se crean tablas.

Crear productos de mesa
(ID int (11),
Nombre Varchar (30) No nulo,
precio int (11),
Clave principal (ID)
);
Crear stocks de mesa
(Product_id int (11),
Opening_stock int (11),
actual_stock int (11),
Clave primaria (Product_ID)
);
Crear stocks_add
(Product_id int (11),
Fecha de entrada_date,
cantidad int (11),
Clave primaria (product_id, entry_date)
);

Ahora, inserte algunos datos en estas tres tablas.

Productos:

Insertar en productos establecidos ID = 101, nombre = "bolsa", precio = 1000;
Insertar en productos establecidos ID = 102, name = "Pen", precio = 100;
Insertar en productos establecidos ID = 103, name = "lápiz", precio = 50;

cepo:

Insertar en stocks set product_id = 101, apertura_stock = 200, current_stock = 100;
Insertar en stocks set product_id = 102, apertura_stock = 230, current_stock = 150;
Insertar en stocks set product_id = 103, apertura_stock = 220, current_stock = 300;

stocks_add:

Insertar en stocks_add set product_id = 103, entry_date = "2018-01-01", cantidad = 30;
Inserte en stocks_add set product_id = 103, entry_date = "2018-01-02", cantidad = 50;
Insertar en stocks_add set product_id = 103, entry_date = "2018-01-03", cantidad = 45;

Crear después del disparador

Puede crear después del activador para realizar cualquier acción automáticamente después de insertar, actualizar o eliminar registros de una tabla en particular. Aquí, productos y cepo Las tablas se seleccionan para crear después del disparador de eliminación. Los datos de la tabla de stock dependen de los datos de la tabla de productos. Entonces, si se elimina algún registro de la tabla de productos, los registros relacionados de la tabla de acciones deben eliminarse. Cree el siguiente procedimiento de activación para eliminar cualquier registro relacionado de la tabla de existencias automáticamente cuando se elimina cualquier registro de la tabla de productos. En este desencadenante, la identificación eliminada se reconoce por viejo.identificación.

Delimitador //
Crear productos de activación_after_delete
Después de eliminar
En productos para cada fila
COMENZAR
Eliminar de las existencias donde Product_id = Old.identificación;
FIN;
//


Después de que se cree el gatillo para la tabla de productos. Ahora tienes que probar ese disparador funciona correctamente o no. Ejecute la siguiente consulta para eliminar un registro de los productos donde identificación es 101 y verifique los datos de las tablas de productos y acciones. Después de ejecutar la consulta, encontrará que el registro relacionado de la tabla de existencias se elimina después del activador. No se encontrará un registro para el valor de identificación, 101, en ambas tablas.

> Eliminar de los productos donde id = 101;
> seleccionar * de productos;
> Seleccionar * de las acciones;

Crea antes de los disparadores

Antes de que el disparador se use para tomar cualquier acción antes de insertar, actualizar o eliminar cualquier o más registros de una tabla particular. Aquí, cepo y stocks_add La tabla se usa para crear antes del activador. El valor de la tabla Current_stock of Stocks depende del valor de la cantidad de la tabla de stocks_add. Si actualiza cualquier valor de cantidad de la tabla stocks_add, entonces la tabla actual_stock de las existencias debe actualizarse. Entonces, si cualquier valor de cantidad existente de la tabla de stocks_add disminuye, entonces se disminuirá la actualidad de las existencias y si el valor de la cantidad aumenta la actual_stock. Crear antes de actualizar el activador para la tabla stocks_add. En este desencadenante, el valor de la cantidad cambiada se calcula restando la cantidad anterior de la nueva cantidad.

Delimitador //
Crear stocks de gatillo_before_update
Antes de la actualización
En stocks_add para cada fila
COMENZAR
Actualizar existencias establecer current_stock = current_stock+(nuevo.cantidades.cantidad)
Donde product_id = viejo.ID del Producto;
FIN;
//

Antes de actualizar, verifique los valores actuales de las acciones y las tablas de stocks_add.

> Seleccionar * de las acciones;
> Seleccionar * de stocks_add;


Supongamos que debe actualizar el valor de cantidad de la tabla de stocks_add donde ID del Producto es 103 y fecha de entrada es 2018-01-01 cual es 30 ahora. Si desea actualizar el valor por 75 Luego ejecute la siguiente consulta de actualización y revise ambas tablas nuevamente. La mayor cantidad es, 75-30 = 45. Entonces, después de la actualización, el disparador se disparará y la tabla de actualidad de Stocks se establecerá como, 300+45 = 345.

Actualizar stocks_add establecer cantidad = 75 donde product_id = 103 y entry_date = "2018-01-01";
> Seleccionar * de las acciones;
> Seleccionar * de stocks_add;

El uso de dos tipos de desencadenantes se muestra en este tutorial. De manera similar, puede crear otros tipos de activación de antes y después de las tablas de su base de datos en función de sus requisitos.