触发器

来源:互联网 发布:淘宝店铺运营计划书 编辑:程序博客网 时间:2024/06/01 19:22

            触发器(trigger)是个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等,(http://baike.baidu.com/view/71792.htm

1、创建触发器的SQL语法:

DELIMITER | CREATE TRIGGER `<databaseName>`.`<triggerName>` < [ BEFORE | AFTER ] > < [ INSERT | UPDATE | DELETE ] > ON <tableName> FOR EACH ROW BEGIN --do something END | 

2、触发器的优点

        触发器可通过数据库中的相关表实现级联更改;不过,通过级联引用完整性约束可以更有效地执行这些更改。触发器可以强制比用 CHECK 约束定义的约束更为复杂的约束。与 CHECK 约束不同,触发器可以引用其它表中的列。例如,触发器可以使用另一个表中的 SELECT 比较插入或更新的数据,以及执行其它操作,如修改数据或显示用户定义错误信息。触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。一个表中的多个同类触发器(INSERT、UPDATE 或 DELETE)允许采取多个不同的对策以响应同一个修改语句。

3、新闻发布系统中使用的触发器

USE [newssystem]GO/****** Object: Trigger [dbo].[trigCategoryDelete] Script Date: 05/15/2011 22:40:05 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO--=========================================                           -- Author:               黄爱岗-- Create date:          2011/5/15-- Description:          删除类别触发器-- =========================================                          ALTER TRIGGER [dbo].[trigCategoryDelete]ON [dbo].[category]--AFTER DELETEinstead of DELETEAS BEGIN--select * from deleted--select * from newsdelete news where caId=(select id from deleted)declare @id int --删除评论delete comment where newsId in (select newsId from news where caId=@caId)--select @id=id from deleted--删除新闻delete news where caId=@caId--删除类别delete category where id = @idEND