Guide d'utilisation des déclencheurs MySQL

1. Introduction

Les déclencheurs sont des objets de base de données liés aux tables, qui déclenchent et exécutent l'ensemble d'instructions SQL définies dans le déclencheur avant ou après l'insertion/mise à jour/suppression. Cette fonctionnalité des déclencheurs peut aider les applications à garantir l'intégrité des données, la journalisation, la vérification des données et d'autres opérations côté base de données.
Utilisez les alias OLD et NEW pour faire référence au contenu de l'enregistrement modifié dans le déclencheur, qui est similaire à celui d'autres bases de données. Actuellement, les déclencheurs ne prennent en charge que le déclenchement au niveau de la ligne (par exemple, si une instruction affecte 5 lignes, elle sera déclenchée 5 fois), mais ne prennent pas en charge le déclenchement au niveau de l'instruction (par exemple, si une instruction affecte 5 lignes, elle sera déclenchée 5 fois). déclenché une fois).

Type de déclencheur NOUVEAU et ANCIEN
INSÉRER NEW représente les données qui seront ou ont été ajoutées
MISE À JOUR OLD représente les données avant modification, NEW représente les données qui seront ou ont été modifiées.
SUPPRIMER OLD indique les données qui seront ou ont été supprimées

 

2. Syntaxe du déclencheur
 

CREATE
TRIGGER nom_déclencheur

AVANT/APRÈS INSÉRER/MISE À JOUR/SUPPRESSION

nom_table POUR CHAQUE LIGNE --déclencheur au niveau de la ligne BEGIN

COMMENCER

        trigger_stmt ;

FIN;

Afficher
AFFICHER LES DÉCLENCHEURS ;


Supprimer
DROP TRIGGER [nom_schéma]nom_trigger ; --Si le nom du schéma n'est pas spécifié, la valeur par défaut est la base de données actuelle.
 

3. Trigger-Case 1 (type à insertion)

--Insérer le déclencheur de données comme suit :
créer le déclencheur tb_user_insert_trigger
après l'insertion sur tb_user pour chaque ligne

commencer

insert into user_logs(id, operation, opera_time, opera_id, opera_params) VALUES(null, 'insert ', now(), new.id, concat( 'Le contenu des données insérées est : id=', new.id, ', name =' ,nouveau.nom) );

fin;

--Voir les déclencheurs

AFFICHER LES DÉCLENCHEURS ;

--supprimer le déclencheur

DROP TRIGGER tb_user_insert_trigger

4. Trigger-Case 2 (type de mise à jour)

--Le déclencheur de mise à jour des données est le suivant :
créer un déclencheur tb_user_update_trigger
après la mise à jour sur tb_user pour chaque ligne

commencer

insérer dans user_logs(id, operation, opera_time, opera_id, opera_params) VALUES(null, 'update', now(), new.id, concat('Données avant mise à jour : id=', old.id, ', name= ' , old.name, 'Données mises à jour : id=' , new.id , ' , name=' , new.name) );

fin;

--Voir les déclencheurs

AFFICHER LES DÉCLENCHEURS ;

--supprimer le déclencheur

DROP TRIGGER tb_user_update_trigger

5. Trigger-Case 3 (supprimer le type)

--Le déclencheur de suppression de données est le suivant :
créez le déclencheur tb_user_delete_trigger
après la suppression sur tb_user pour chaque ligne

commencer

insérer dans user_logs(id,operate_time,operate_id,operate_params)VALUES(null, 'delete', now(),old.id, concat('删除前的数据: id=' , old.id , ' , name= ' ,ancien.nom) );

fin;

--Voir les déclencheurs

AFFICHER LES DÉCLENCHEURS ;

--supprimer le déclencheur

DROP TRIGGER tb_user_delete_trigger

6. Résumé des déclencheurs

Les déclencheurs MySQL sont des procédures stockées qui s'exécutent sur une table spécifique, généralement lorsque des données sont insérées, mises à jour et supprimées. Les déclencheurs vous permettent d'exécuter une logique personnalisée avant et après les opérations de base de données, telles que la validation des données, la journalisation ou la mise à jour des données dans d'autres tables associées.

Créez un déclencheur MySQL :

CREATE TRIGGER trigger_name
{BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON table_name
FOR EACH ROW
BEGIN
    -- 触发器逻辑
END;

Nom du déclencheur : un nom unique que vous donnez à votre déclencheur.
AVANT / APRES : Spécifie que le déclencheur se déclenche avant ou après l'opération.
INSERT / UPDATE / DELETE : spécifiez le déclencheur à déclencher lorsqu'une opération d'insertion, de mise à jour ou de suppression est effectuée.
table_name : Le nom de la table à laquelle appartient le déclencheur.
POUR CHAQUE LIGNE : indique que le déclencheur s’exécutera une fois pour chaque ligne affectée.

Écrivez la logique de déclenchement entre BEGIN et END. Vous pouvez utiliser le mot clé NEW pour référencer une nouvelle valeur insérée ou mise à jour, et le mot clé OLD pour référencer une ancienne valeur mise à jour ou supprimée.

Par exemple, l'exemple suivant est un cas de déclenchement simple :

A chaque fois qu'une nouvelle ligne est insérée dans la table "orders", la colonne "last_update" est automatiquement mise à jour avec l'heure actuelle :

CREATE TRIGGER update_last_update
AFTER INSERT ON orders
FOR EACH ROW
BEGIN
    UPDATE orders
    SET last_update = NOW()
    WHERE id = NEW.id;
END;

Ceci n'est qu'un exemple simple, vous pouvez réellement écrire une logique de déclenchement plus complexe pour répondre à vos besoins.

Je suppose que tu aimes

Origine blog.csdn.net/weixin_55772633/article/details/132779764
conseillé
Classement