Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.
MySQL: antes de insertar el disparador
Este tutorial de MySQL explica cómo Crear un activador ANTES DE INSERTAR Sintaxis y ejemplos en MySQL.
describir
El activador ANTES DE INSERTAR significa que MySQL activará este activador antes de ejecutar la operación INSERTAR.
sintaxis
La sintaxis para crear un disparador ANTES DE INSERTAR en MySQL es:
CREATE TRIGGER trigger_name BEFORE INSERT ON table_name FOR EACH ROW BEGIN -- variable declarations -- trigger code END;
parámetro o parámetro
trigger_name El nombre del activador que se va a crear. ANTES DE INSERTAR significa que el activador se disparará antes de que se realice la operación INSERTAR. table_name El nombre de la tabla en la que se creó el disparador.
límite
- No puede crear disparadores ANTES en las vistas.
- Puede actualizar el nuevo valor.
- No puede actualizar los valores antiguos.
notas
- Consulte también cómo crear disparadores DESPUÉS DE ELIMINAR, DESPUÉS DE INSERTAR, DESPUÉS DE ACTUALIZAR, ANTES DE ELIMINAR y ANTES DE ACTUALIZAR.
- Consulte también Cómo eliminar disparadores.
ejemplo
Veamos un ejemplo de cómo crear un disparador ANTES DE INSERTAR usando la declaración CREATE TRIGGER en MySQL.
Si creas una tabla como esta:
CREATE TABLE contacts ( contact_id INT(11) NOT NULL AUTO_INCREMENT, last_name VARCHAR(30) NOT NULL, first_name VARCHAR(25), birthday DATE, created_date DATE, created_by VARCHAR(30), CONSTRAINT contacts_pk PRIMARY KEY (contact_id) );
Entonces podemos usar la declaración CREATE TRIGGER para crear un disparador ANTES DE INSERTAR de la siguiente manera:
DELIMITER // CREATE TRIGGER contacts_before_insert BEFORE INSERT ON contacts FOR EACH ROW BEGIN DECLARE vUser varchar(50); -- Find username of person performing INSERT into table SELECT USER() INTO vUser; -- Update create_date field to current system date SET NEW.created_date = SYSDATE(); -- Update created_by field to the username of the person performing the INSERT SET NEW.created_by = vUser; END; // DELIMITER ;