Maison >base de données >tutoriel mysql >Comment personnaliser les fonctions et les déclencheurs dans MySQL

Comment personnaliser les fonctions et les déclencheurs dans MySQL

王林
王林avant
2023-06-01 12:13:311533parcourir

1. Fonctions stockées (fonctions personnalisées)

  • 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.

1.1 Définir la fonction stockée

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 ;

1.2 Appelez le fonction stockée

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);
# 这里和存储过程一样,调用的时候需要加小括号和参数,但是在删除的时候指定函数名即可

1.3 Supprimer la fonction stockée

Format de syntaxe

drop [if exists] function fun;

2. #

2.1 Introduction aux déclencheurs

  • Un déclencheur est un objet de base de données lié à une table, qui fait référence à avant ou après

    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.

  • Les déclencheurs ne peuvent être utilisés que lors de l'ajout, de la suppression ou de la modification, mais pas lors de l'interrogation.

  • Dans les déclencheurs, utilisez les ANCIENS et NOUVEAUX alias pour référencer les parties modifiées de l'enregistrement, comme dans d'autres bases de données. Les déclencheurs MySQL prennent uniquement en charge le déclenchement au niveau de la ligne et ne prennent pas en charge le déclenchement au niveau de l'instruction. Oracle prend en charge les déclencheurs au niveau de la ligne et au niveau de l'instruction.

  • Les deux variables OLD et NEW sont également appelées variables d'enregistrement de ligne.

    Vous pouvez utiliser ces deux variables pour obtenir les données du tableau de données à exploiter.

Comment personnaliser les fonctions et les déclencheurs dans MySQL

2.2 Créer un déclencheur

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 :

Comment personnaliser les fonctions et les déclencheurs dans MySQL#🎜🎜 #

    En mode insertion, utilisez le mot-clé new pour obtenir les données à insérer
  • utilisé est après. Ce déclencheur est exécuté pour enregistrer le journal une fois l'ajout de la table emp terminé.
  • Lorsque ce déclencheur est exécuté est lié à deux points :
  • #🎜🎜 #

    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.

    • Créez un déclencheur pour exécuter la mise à jour :

#🎜🎜 #

À ce stade, l'ancienne variable stocke les données avant modification, et la nouvelle variable stocke les données après modification.

Comment personnaliser les fonctions et les déclencheurs dans MySQL

Create Trigger pour exécuter delete :

Les données à supprimer stockées dans l'ancienne variable à ce moment-là

# 🎜🎜#Comment personnaliser les fonctions et les déclencheurs dans MySQL

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 : Comment personnaliser les fonctions et les déclencheurs dans MySQL#🎜🎜 #

drop trigger [schema_name.](数据库名)trigger_name(触发器名);

Si schema_name (nom de la base de données) n'est pas spécifié, il s'agit par défaut de la base de données actuelle.

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer