老乌龟谈触发器(Trigger)的使用

作者在 2006-08-29 22:19:00 发布以下内容

触发器(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)的使用

 

SQL研究 | 阅读 1582 次
文章评论,共0条
游客请输入验证码
浏览48018次