触发器(Trigger)的使用
1、定义:
触发器(Trigger)是一种特殊类型的存储过程,它不像一般的存储过程,可以直接使用存储过程的名字来调用或执行。触发器的执行是通过事件来触发执行的,所以称为触发器。当用户发布对指定的表或表中列进行修改(包括插入、删除和更新)的命令时(事件发生),SQL SERVER将自动执行在相应触发器中的SQL语句。
2、作用:
主要是用来保持数据的完整性和一致性。
3、语法:
CREATE TRIGGER trigger_name
ON table_name
FOR {INSERT,DELETE,UPDATE}
AS
SQL_statements
注意:SQL SERVER为每个触发器都创建两个专用的工作表:inserted表和deleted表。这是两个逻辑表,由系统来维护,不充许用户直接对这两个表进行修改,它们存放于内存中,不存放在数据库中。这两个表的结构总是与被触发器作用的表的结构相同。触发器工作完成,与触发器相关的这两个表也被删除。
Inserted表:存放由INSERT或UPDATE语句的执行而导致要加到该触发器作用的表中去的任何新行。
Deleted表:存放由DELETE或UPDATE语句的执行而导致要从被该触发器作用的表中删除的任何行。
4、举例:
完成在销售产品是,自动减少仓存的数量。
销售表(sales)为:supplier,barcode,unit,qty,money…
仓存的表(inventory)为:barcode,unit,qty,money…
//触发器
Create Trigger trg_I_salesqty On sales
For insert As
Update inventory.qty = inventory.qty - inserted.qty,inventory.money - inserted.money
From inventory,inserted
Where inventory.barcode = inserted.barcode
Return
这样,通过运行把触发器加入到后台数据库后,每次对销售表(sales)进行插入记录也就是销售时,仓存就自动减少数量和金额。当然真正在写应用程序时,触发器要写得严密些。
-------------------------------------------------------------------------------------------
摘自 51PB 网站 『乌龟学堂』 0341 -- 谈谈PB中触发器(Trigger)的使用