Maison >base de données >tutoriel mysql >Comment personnaliser les fonctions et les déclencheurs dans MySQL
Les fonctions personnalisées sont un moyen d'étendre MySQL et leur utilisation est la même que celle des fonctions intégrées.
Les deux conditions nécessaires pour définir une fonction : paramètres et valeur de retour. Les fonctions peuvent renvoyer des valeurs de n'importe quel type et peuvent également recevoir des paramètres de ces types.
A propos de l'organisme de fonction :
L'organisme de fonction est légal Composition des instructions SQL.
Le corps de la fonction peut être une simple instruction SELECT ou INSERT.
Si le corps de la fonction est une structure conforme, il est enveloppé avec l'instruction BEGIN....AND.
Les structures composites peuvent contenir des déclarations, des boucles, des structures de contrôle, etc.
Important : Les fonctions personnalisées ne peuvent pas avoir le même nom, tout comme la définition d'une variable globale, les noms de variables ne peuvent pas être cohérents.
Format de grammaire :
create function 函数名(参数列表) returns type(返回值类型) begin --SQL语句 end;
Exigences : Définir une fonction de procédure stockée pour obtenir le nombre total d'enregistrements qui remplissent les conditions
Implémentation :
delimiter $ create function fun(countryId int) returns int begin # 定义一个存储总数据条数的变量 declare cum int default 0; # 查询等于传递参数的全部的数据数,然后将其赋值给定义的变量 select count(*) into cum from city where country_id = countryId; # 返回结果值。存储函数必须有返回值 return cum; end $ delimiter ;
Format de grammaire :
select 函数名(参数列表);
Remarque : Le mot-clé call est utilisé lors de l'appel d'une procédure stockée, mais lors de l'appel une procédure stockée Lorsque vous utilisez une fonction, utilisez simplement select directement, tout comme appeler une fonction d'agrégation ordinaire dans MySQL.
select fun(1); # 这里和存储过程一样,调用的时候需要加小括号和参数,但是在删除的时候指定函数名即可
Format de syntaxe
drop [if exists] function fun;
insert/update/ supprimez , déclenchez et exécutez l'ensemble SQL défini dans le déclencheur. Cette fonctionnalité des déclencheurs peut aider les applications à garantir l'intégrité des données, la journalisation et la vérification des données côté base de données.
Vous pouvez utiliser ces deux variables pour obtenir les données du tableau de données à exploiter.
Format grammatical:
create trigger(触发器) trigger_name(触发器名称) before/after insert/update/delete on tab_name(表名) [for each row](行级触发器) begin trigger_stmt;(触发器的逻辑) end;
Exigence : Enregistrez le journal des modifications de données emp_logs de la table emp via des déclencheurs, qui incluent l'ajout, la modification et la suppression#🎜 🎜 #
Implémentation :Analyse :
Un déclencheur ne peut opérer qu'un seul type d'opération de données et ne peut pas terminer l'ajout, la modification ou l'ajout données en même temps. Par conséquent, plusieurs déclencheurs doivent être définis à ce stade pour effectuer cette tâche de journalisation.
Parce que MySQL est un déclencheur pour les opérations au niveau des lignes, les nouvelles et les anciennes stockent une ligne entière de données.Créez un déclencheur pour exécuter l'insertion :
#🎜🎜 #
#🎜🎜 #
Ce qu'il faut exploiter, c'est la table emp, qui est la table déclarée après.Doit effectuer l'opération d'insertion.
#🎜🎜 #
À ce stade, l'ancienne variable stocke les données avant modification, et la nouvelle variable stocke les données après modification.Create Trigger pour exécuter delete :
Les données à supprimer stockées dans l'ancienne variable à ce moment-là
# 🎜🎜#
Test : Le test doit opérer sur la table emp, pour que le trigger défini ci-dessus soit déclenché.
2.3 Supprimer le déclencheur
Structure grammaticale : #🎜🎜 #
drop trigger [schema_name.](数据库名)trigger_name(触发器名);
2.4 Afficher les déclencheurs
Vous pouvez afficher l'état, la syntaxe et d'autres informations des déclencheurs en exécutant la commande show triggers.Structure grammaticale :
show triggers;
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!