En tant que système de gestion de bases de données relationnelles open source, MySQL fournit de puissantes procédures stockées et fonctions de déclenchement, qui peuvent facilement mettre en œuvre de nombreuses logiques métier. Cet article présentera respectivement les connaissances pertinentes sur les déclencheurs MySQL et les procédures stockées.
1. Déclencheurs MySQL
Dans MySQL, un déclencheur est un gestionnaire spécial, qui est une opération associée à une table de base de données, telle que l'insertion, la mise à jour ou la suppression. Lors de l'utilisation de déclencheurs, un événement spécifique sur la feuille d'action active le déclencheur. Les déclencheurs peuvent être considérés comme des gestionnaires d’événements au niveau de la base de données.
MySQL prend en charge deux types de déclencheurs : AVANT et APRÈS. Dans un déclencheur BEFORE, avant le traitement de l'événement (l'opération d'insertion, de mise à jour ou de suppression n'a pas encore été effectuée), tandis que dans un déclencheur APRÈS, après le traitement de l'événement. La principale différence entre les déclencheurs BEFORE et AFTER est leur temps d’exécution.
Ce qui suit est un exemple de déclencheur simple qui se déclenche avant l'opération d'insertion :
CREATE TRIGGER insert_trigger
AVANT INSERT SUR table_name
POUR CHAQUE LIGNE
INSÉRER DANS log_table
(id
, time
, action
)
VALEURS (NEW.id, NOW (), 'insert');insert_trigger
BEFORE INSERT ON table_name
FOR EACH ROW
INSERT INTO log_table
(id
, time
, action
)
VALUES (NEW.id, NOW(), 'insert');
此触发器将在将新记录插入到table_name之前,自动将一个日志记录插入到log_table中。
下面是触发器的另一个示例,此触发器将在删除记录之前触发:
CREATE TRIGGER delete_trigger
BEFORE DELETE ON table_name
FOR EACH ROW
INSERT INTO deleted_records_table
(id
, time
)
VALUES (OLD.id, NOW());
此触发器将删除操作执行之前将被触发,自动将被删除记录复制到deleted_records_table中。
二、MySQL存储过程
存储过程是为了完成特定任务而编写的一组SQL语句集合。它是MySQL中的一种功能较强、交互性较弱的编程语言。存储过程可以用于控制、管理、维护和查询数据库,并且可以重复使用。存储过程可以在客户端完成的操作,可以在服务端完成,比如加密、存档、日志记录、统计分析等操作都可以在服务端用存储过程实现。
MySQL存储过程是由一组SQL语句和逻辑组成的。它可以包括变量、条件、循环、控制流程等元素,这使得存储过程可以完成很多常规的业务逻辑。存储过程可以通过调用来让程序员和用户使用,就像执行SQL查询那样。
下面是一个简单的示例,展示如何创建和使用存储过程:
DELIMITER //
CREATE PROCEDURE get_customer
(customer_id INT)
BEGIN
SELECT * FROM customer
WHERE id
=customer_id;
END //
DELIMITER ;
执行该存储过程的语法为:
CALL get_customer
delete_trigger
AVANT DELETE ON table_name
deleted_records_table
(id
, time
) Ce déclencheur sera déclenché avant l'exécution de l'opération de suppression et les enregistrements supprimés seront automatiquement copiés dans delete_records_table. 🎜🎜2. Procédures stockées MySQL🎜🎜Une procédure stockée est un ensemble d'instructions SQL écrites pour accomplir une tâche spécifique. C'est un langage de programmation plus puissant et moins interactif dans MySQL. Les procédures stockées peuvent être utilisées pour contrôler, gérer, maintenir et interroger la base de données, et peuvent être réutilisées. Les opérations que les procédures stockées peuvent effectuer sur le client peuvent être effectuées sur le serveur. Les opérations telles que le chiffrement, l'archivage, la journalisation, l'analyse statistique, etc. peuvent toutes être implémentées sur le serveur à l'aide de procédures stockées. 🎜🎜Les procédures stockées MySQL sont composées d'un ensemble d'instructions et de logique SQL. Il peut inclure des variables, des conditions, des boucles, un flux de contrôle et d'autres éléments, ce qui permet aux procédures stockées de compléter de nombreuses logiques métier conventionnelles. Les procédures stockées peuvent être utilisées par les programmeurs et les utilisateurs en les appelant, tout comme l'exécution de requêtes SQL. 🎜🎜Voici un exemple simple montrant comment créer et utiliser une procédure stockée : 🎜🎜DELIMITER //
get_customer
(customer_id INT)customer
WHERE id
=customer_id;Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!