Maison base de données tutoriel mysql SQLServerDML触发器之AFTER触发器

SQLServerDML触发器之AFTER触发器

Jun 07, 2016 pm 04:19 PM
after 触发器

根据DML触发器发生的时间、编写触发器所使用的语言,可以分为AFTER触发器、INSTEAD OF触发器和CLR触发器。AFTER触发器在执行INSERT、UPDATE或DELETE语句操作之后、INSTEAD OF触发器和约束之后激发。INSTEAD OF在处理约束前激发,因此可以在INSTEAD OF中使用

   根据DML触发器发生的时间、编写触发器所使用的语言,可以分为AFTER触发器、INSTEAD OF触发器和CLR触发器。AFTER触发器在执行INSERT、UPDATE或DELETE语句操作之后、INSTEAD OF触发器和约束之后激发。INSTEAD OF在处理约束前激发,因此可以在INSTEAD OF中使用其他语句来替代激发触发器的INSERT、UPDATE等语句。并且,还可为基于一个或多个基表的视图定义INSTEAD OF触发器,从而扩展视图可支持的更新类型。CLR触发器可以是AFTER触发器或INSTEAD OF触发器,并且也可以是DDL触发器。

  需要注意的是,在创建DML触发器时,不能使用下列语句:

  ALTER DATABASE CREATE DATABASE DROP DATABASE

  LOAD DATABASE LOAD LOG RECONFIGURE

  RESTORE DATABASE RESTORE LOG

  14.1.1 AFTER触发器

  一个表中可以具有多个AFTER触发器,只要它们的名称不相同即可。每个触发器只能应用于一个表,但是一个触发器可以同时应用于一个表的三个用户操作(UPDATE、INSERT和DELETE)。

  下面的语句创建了一个PriTrigger表和一个DetailTable,其中PriTrigger表用于存放销售订单的编号和金额,DetailTable表用于存放每笔订单中的产品信息。为PriTrigger表的DELETE操作创建了一个名为PriTrigger的触发器,当删除PriTrigger表中的订单信息时,该触发器将删除DetailTable表中该笔订单的产品信息。

  USE AdventureWorks;

  GO

  -- 创建主表,存放销售订单编号和金额

  CREATE TABLE PriTable

  (OrderID int IDENTITY(1,1), OrderTotal money);

  GO

  -- 创建明细表,,存放每笔订单中的产品信息

  CREATE TABLE DetailTable

  (OrderID int, ProductID int, ProductCount int NOT NULL, Price money);

  GO

  -- 向主表中插入订单信息

  INSERT INTO PriTable VALUES (2100.00);

  INSERT INTO PriTable VALUES (1000.00);

  -- 向明细表中插入订单的产品信息

  INSERT INTO DetailTable VALUES (1,1,10,110.00);

  INSERT INTO DetailTable VALUES (1,2,10,100.00);

  INSERT INTO DetailTable VALUES (2,2,10,100.00);

  GO

  -- 为PriTrigger表创建触发器

  CREATE TRIGGER PriTrigger

  ON PriTable

  AFTER DELETE

  AS

  DELETE FROM DetailTable

  WHERE OrderID IN (SELECT OrderID

  FROM Deleted);

  PRINT N'已经删除了DetailTable表中的相关数据' -- 此句仅为演示需要,在触发器中不应当使用这样的信息语句

  在定义触发器时,触发器名称在CREATE TRIGGER关键字之后,ON子句指定要创建触发器的基表。AFTER子句(也可以使用FOR来代替AFTER关键字,二者功能相同)指定激活触发器的操作语句,可以同时指定多个操作语句。例如,“AFTER DELETE, INSERT”表示在对表执行DELETE、INSERT语句时激活触发器。AS关键字后指定触发器执行什么样的操作。

  注意WHERE条件中IN子句中的Deleted关键字。当从PriTrigger表中删除行时,被删除的行会被复制到一个名为Deleted的临时内存表中。如果为表指定了一个执行INSERT语句时的触发器,则在向表中插入行时,新行将同时被添加到一个名为Inserted的临时内存表中。如果为表指定了一个执行UPDATE语句时的触发器,由于更新事务类似于在删除操作之后执行插入操作。因此,旧行被复制到Deleted表中,然后,新行被复制到触发器表和Inserted表中。

  Deleted表和Inserted表都是由SQL Server自动创建和管理的,这些表的结构与定义触发器的基表的结构相同。

  执行下面的语句从PriTable表中删除OrderID为1的行,这时触发器会自动删除DetailTable表中的相关行,得到的结果和消息如图14-1所示。

  DELETE FROM PriTable WHERE OrderID = 1;

  SELECT * FROM PriTable;

  SELECT * FROM DetailTable;

SQLServerDML触发器之AFTER触发器   三联

  图14-1 删除PriTable表中OrderID为1的行时得到的结果和消息

  如果执行下面的语句,准备从PriTable表中删除OrderID为3的行。由于PriTable表中并不存在这样的行,所以并不会删除成功。虽然没有删除成功,但是在消息窗口中仍然可以看到由触发器的PRINT语句发回的信息。这说明即使语句没有影响到表中的行,也会激活触发器。在没有删除成功的情况下,Deleted表是一个空表。

  DELETE FROM PriTable WHERE OrderID = 3;

Déclaration de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Où trouver la courte de la grue à atomide atomique
1 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment masquer le texte jusqu'à ce qu'on clique dessus dans Powerpoint Comment masquer le texte jusqu'à ce qu'on clique dessus dans Powerpoint Apr 14, 2023 pm 04:40 PM

Comment masquer le texte avant tout clic dans PowerPoint Si vous souhaitez que le texte apparaisse lorsque vous cliquez n'importe où sur une diapositive PowerPoint, sa configuration est simple et rapide. Pour masquer du texte avant de cliquer sur un bouton dans PowerPoint : Ouvrez votre document PowerPoint et cliquez sur le menu Insérer. Cliquez sur Nouvelle diapositive. Choisissez Vide ou l’un des autres préréglages. Toujours dans le menu Insertion, cliquez sur Zone de texte. Faites glisser une zone de texte sur la diapositive. Cliquez sur la zone de texte et entrez votre

Comment ajouter un déclencheur dans Oracle Comment ajouter un déclencheur dans Oracle Dec 12, 2023 am 10:17 AM

Dans la base de données Oracle, vous pouvez utiliser l'instruction CREATE TRIGGER pour ajouter des déclencheurs. Un déclencheur est un objet de base de données qui peut définir un ou plusieurs événements sur une table de base de données et exécuter automatiquement les actions correspondantes lorsque l'événement se produit.

Comment écrire des déclencheurs dans MySQL en utilisant PHP Comment écrire des déclencheurs dans MySQL en utilisant PHP Sep 21, 2023 am 08:16 AM

Comment écrire des déclencheurs dans MySQL à l'aide de PHP MySQL est un système de gestion de bases de données relationnelles couramment utilisé et PHP est un langage de script côté serveur populaire. Utiliser PHP pour écrire des déclencheurs dans MySQL peut nous aider à réaliser des opérations de base de données automatisées. Cet article explique comment utiliser PHP pour écrire des déclencheurs MySQL et fournit des exemples de code spécifiques. Avant de commencer, assurez-vous que MySQL et PHP ont été installés et que les tables de base de données correspondantes ont été créées. 1. Créez des fichiers et des données PHP

Quel est le niveau de déclenchement de MySQL ? Quel est le niveau de déclenchement de MySQL ? Mar 30, 2023 pm 08:05 PM

Les déclencheurs MySQL sont au niveau de la ligne. Selon les standards SQL, les déclencheurs peuvent être divisés en deux types : 1. Les déclencheurs au niveau de la ligne, qui seront activés une fois pour chaque ligne de données modifiées. Si une instruction insère 100 lignes de données, le déclencheur sera appelé 100 fois ; . Déclencheurs au niveau de l'instruction Le déclencheur est activé une fois pour chaque instruction. Une instruction qui insère 100 lignes de données n'appellera le déclencheur qu'une seule fois. MySQL ne prend en charge que les déclencheurs au niveau des lignes, pas les déclencheurs au niveau des instructions préparées.

Comment écrire des déclencheurs personnalisés et des procédures stockées dans MySQL à l'aide de PHP Comment écrire des déclencheurs personnalisés et des procédures stockées dans MySQL à l'aide de PHP Sep 20, 2023 am 11:25 AM

Comment écrire des déclencheurs personnalisés et des procédures stockées dans MySQL à l'aide de PHP Introduction : Lors du développement d'applications, nous devons souvent effectuer certaines opérations au niveau de la base de données, telles que l'insertion, la mise à jour ou la suppression de données. MySQL est un système de gestion de bases de données relationnelles largement utilisé et PHP est un langage de script côté serveur populaire. Cet article explique comment utiliser PHP pour écrire des déclencheurs personnalisés et des procédures stockées dans MySQL, et fournit des exemples de code spécifiques. 1. Que sont les déclencheurs et les déclencheurs de procédures stockées (Trigg

Comment écrire des déclencheurs personnalisés dans MySQL à l'aide de Python Comment écrire des déclencheurs personnalisés dans MySQL à l'aide de Python Sep 20, 2023 am 11:04 AM

Comment écrire des déclencheurs personnalisés dans MySQL à l'aide de Python Les déclencheurs sont une fonctionnalité puissante de MySQL qui peut définir certaines opérations exécutées automatiquement sur les tables de la base de données. Python est un langage de programmation concis et puissant qui peut facilement interagir avec MySQL. Cet article explique comment écrire des déclencheurs personnalisés à l'aide de Python et fournit des exemples de code spécifiques. Tout d'abord, nous devons installer et importer la bibliothèque PyMySQL, qui est la manière dont Python travaille avec une base de données MySQL.

Comment utiliser les déclencheurs MySQL pour implémenter l'archivage automatique des données Comment utiliser les déclencheurs MySQL pour implémenter l'archivage automatique des données Aug 02, 2023 am 10:37 AM

Comment utiliser les déclencheurs MySQL pour mettre en œuvre l'archivage automatique des données Introduction : Dans le domaine de la gestion moderne des données, l'archivage et le nettoyage automatiques des données sont une exigence importante et courante. À mesure que la quantité de données augmente, la conservation de données historiques complètes occupera des ressources de stockage excessives et réduira les performances des requêtes. Les déclencheurs MySQL constituent un moyen efficace de répondre à cette exigence. Cet article explique comment utiliser les déclencheurs MySQL pour réaliser un archivage automatique des données. 1. Qu'est-ce qu'un déclencheur MySQL ? Un déclencheur MySQL est un type particulier de mémoire.

Comment utiliser les paramètres dans les déclencheurs MySQL Comment utiliser les paramètres dans les déclencheurs MySQL Mar 16, 2024 am 09:27 AM

Un déclencheur MySQL est un programme spécial utilisé dans le système de gestion de base de données pour surveiller les opérations d'une table spécifique et effectuer les opérations correspondantes en fonction de conditions prédéfinies. Lors de la création d'un déclencheur MySQL, nous pouvons utiliser des paramètres pour transmettre de manière flexible des données et des informations, rendant le déclencheur plus polyvalent et applicable. Dans MySQL, les déclencheurs peuvent déclencher et exécuter la logique correspondante avant ou après les opérations INSERT, UPDATE et DELETE d'une table spécifique. L'utilisation de paramètres peut rendre les déclencheurs plus flexibles et peut être transmis selon les besoins.

See all articles