Maison >base de données >SQL >L'utilisation et la syntaxe des déclencheurs SQL

L'utilisation et la syntaxe des déclencheurs SQL

小老鼠
小老鼠original
2024-04-13 14:57:161084parcourir

Un déclencheur est un code de base de données qui s'exécute automatiquement lorsqu'un événement spécifique (insertion, mise à jour, suppression) se produit. La syntaxe du déclencheur comprend le nom du déclencheur, le nom de la table, l'heure de déclenchement (AVANT/APRÈS) et le type d'événement (INSERT/UPDATE/DELETE). Les types de déclencheurs incluent AVANT et APRÈS, et les types d'événements incluent INSERT, UPDATE et DELETE. Les déclencheurs peuvent être utilisés pour la vérification de l'intégrité des données, la journalisation d'audit, les tâches automatisées et la logique métier. Par exemple, vous pouvez créer un déclencheur pour enregistrer l'heure d'insertion lorsqu'une nouvelle ligne est insérée afin de garantir la cohérence des données.

L'utilisation et la syntaxe des déclencheurs SQL

Utilisation et syntaxe des déclencheurs SQL

Qu'est-ce qu'un déclencheur ?

Un déclencheur est un morceau de code dans la base de données qui déclenche automatiquement l'exécution lorsqu'un événement spécifique se produit dans la base de données. Ils sont utilisés pour effectuer des actions personnalisées lorsque les données changent.

La syntaxe des déclencheurs

La syntaxe des déclencheurs en SQL est la suivante :

<code>CREATE TRIGGER trigger_name
ON table_name
FOR INSERT | UPDATE | DELETE
AS
BEGIN
   -- 触发器代码...
END;</code>

Types de déclencheurs

Selon le timing de déclenchement, les déclencheurs peuvent être divisés dans les types suivants :

  • AVANT code> Déclencheur : exécuter avant que l'événement ne se produise.
  • BEFORE 触发器:在事件发生之前执行。
  • AFTER 触发器:在事件发生之后执行。

根据事件类型,触发器可分为:

  • INSERT 触发器:在插入新行时触发。
  • UPDATE 触发器:在更新现有行时触发。
  • DELETE 触发器:在删除行时触发。

触发器的使用场景

触发器广泛用于以下场景:

  • 数据完整性验证:确保数据符合特定规则(例如,非空约束、唯一性约束)。
  • 审计和记录:跟踪数据库中的变化并记录用户活动。
  • 自动任务:在数据更改时自动执行特定任务(例如,发送电子邮件通知)。
  • 业务逻辑:实现复杂的业务规则,例如计算 derived column 或维护关联表。

示例

以下是一个示例触发器,用于在向 users 表中插入新行时记录插入时间:

<code class="sql">CREATE TRIGGER insert_timestamp
BEFORE INSERT ON users
AS
BEGIN
   SET NEW.created_at = CURRENT_TIMESTAMP();
END;</code>

当插入新行到 users 表时,insert_timestamp 触发器会在插入之前执行,并自动将当前时间戳设置为新建行的 created_atAFTER Trigger : exécuté après que l'événement se soit produit.

Selon le type d'événement, les déclencheurs peuvent être divisés en : 🎜🎜🎜INSERT Déclencheur : déclenché lorsqu'une nouvelle ligne est insérée. 🎜UPDATE Déclencheur : se déclenche lorsqu'une ligne existante est mise à jour. 🎜DELETE Déclencheur : se déclenche lorsqu'une ligne est supprimée. 🎜🎜Scénarios d'utilisation des déclencheurs🎜🎜🎜Les déclencheurs sont largement utilisés dans les scénarios suivants : 🎜🎜🎜🎜Vérification de l'intégrité des données : 🎜Assurer que les données sont conformes à des règles spécifiques (par exemple, des contraintes non nulles , contrainte d'unicité). 🎜🎜Audit et journalisation : 🎜Suivez les modifications dans la base de données et enregistrez l'activité des utilisateurs. 🎜🎜Tâches automatisées : 🎜Effectuez automatiquement des tâches spécifiques lorsque les données changent (par exemple, envoyer des notifications par e-mail). 🎜🎜Logique métier : 🎜Implémentez des règles métier complexes, telles que le calcul de colonnes dérivées ou la gestion de tables associées. 🎜🎜Exemple🎜🎜🎜Ce qui suit est un exemple de déclencheur pour enregistrer le temps d'insertion lorsqu'une nouvelle ligne est insérée dans la table users : 🎜rrreee🎜Lorsqu'une nouvelle ligne est inséré Lors de l'accès à la table users, le déclencheur insert_timestamp s'exécute avant l'insertion et définit automatiquement l'horodatage actuel sur le champ created_at de la nouvelle ligne . 🎜

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn