触发器(Trigger)(一)

转载 2007年09月20日 08:49:00
 
  触发器简介
触发器实际上就是一种特殊类型的存储过程,它是在执行某些特定的T-SQL语句时自动执行的一种存储过程。在SQL Server 2005中,根据SQL语句的不同,把触发器分为两类:一类是DML触发器,一类是DLL触发器。
 触发器的概念和作用
SQL Server 2005里,可以用两种方法来保证数据的有效性和完整性:约束(check)和触发器(Trigger)。约束是直接设置于数据表内,只能现实一些比较简单的功能操作,如:实现字段有效性和唯一性的检查、自动填入默认值、确保字段数据不重复(即主键)、确保数据表对应的完整性(即外键)等功能。
触发器是针对数据表(库)的特殊的存储过程,当这个表发生了InsertUpdateDelete操作时,会自动激活执行的,可以处理各种复杂的操作。在SQL Server 2005中,触发器有了更进一步的功能,在数据表(库)发生CreateAlterDrop操作时,也会自动激活执行。
触发器常用的一些功能如下:
完成比约束更复杂的数据约束:触发器可以实现比约束更为复杂的数据约束
检查所做的SQL是否允许:触发器可以检查SQL所做的操作是否被允许。例如:在产品库存表里,如果要删除一条产品记录,在删除记录时,触发器可以检查该产品库存数量是否为零,如果不为零则取消该删除操作。
修改其它数据表里的数据:当一个SQL语句对数据表进行操作的时候,触发器可以根据该SQL语句的操作情况来对另一个数据表进行操作。例如:一个订单取消的时候,那么触发器可以自动修改产品库存表,在订购量的字段上减去被取消订单的订购数量。
调用更多的存储过程:约束的本身是不能调用存储过程的,但是触发器本身就是一种存储过程,而存储过程是可以嵌套使用的,所以触发器也可以调用一个或多过存储过程。
发送SQL Mail:在SQL语句执行完之后,触发器可以判断更改过的记录是否达到一定条件,如果达到这个条件的话,触发器可以自动调用SQL Mail来发送邮件。例如:当一个订单交费之后,可以物流人员发送Email,通知他尽快发货。
返回自定义的错误信息:约束是不能返回信息的,而触发器可以。例如插入一条重复记录时,可以返回一个具体的友好的错误信息给前台应用程序。
更改原本要操作的SQL语句:触发器可以修改原本要操作的SQL语句,例如原本的SQL语句是要删除数据表里的记录,但该数据表里的记录是最要记录,不允许删除的,那么触发器可以不执行该语句。
防止数据表构结更改或数据表被删除:为了保护已经建好的数据表,触发器可以在接收到DropAlter开头的SQL语句里,不进行对数据表的操作。
 

java quartz 中的时间格式 及启动定时器 触发器

SimpleTrigger 如果需要计划一个任务在指定的时间执行,或者在指定的时间后以指定的间隔连续执行多次,比如希望在2005年1月12号上午11:22:54开始执行一个任务,在这之后每隔20分钟...
  • u013036792
  • u013036792
  • 2014年12月03日 18:39
  • 1549

trigger触发器和自定义方法

$(function () { var oTxt = $("input"); //trigger触发器,需要把事件放在自己的身上去触发事件;触发事件不需要用户...
  • younghaiqing
  • younghaiqing
  • 2016年10月21日 15:35
  • 705

Sybase触发器学习

这几日需要设计项目的几个报表统计模块,然后统计其数值。时间甚赶,需要新增一堆表,且以前的一个主表被修改并没有对应的log表,得重新设计。写log表要求使用触发器实现。   所以在网上查找半天syba...
  • qq_29663071
  • qq_29663071
  • 2016年07月15日 13:45
  • 269

如何查看在某个表上建立的触发器和约束?

SELECT CONSTRAINT_TYPE, CONSTRAINT_NAME, INDEX_NAME FROM USER_CONSTRAINTSSELECT * FROM USER_CONSTRAI...
  • E_wsq
  • E_wsq
  • 2008年04月10日 15:20
  • 1149

[oracle] 触发器使用教程和命名规范

触发器使用教程和命名规范       目  录   触发器使用教程和命名规范    1  1,触发器简介 1  2,触发器示例 2  3,触发器语法和功能  3  4,例一:行级触发器之一    4 ...
  • xys_777
  • xys_777
  • 2010年07月16日 01:04
  • 4305

android:SQLite--触发器详解

关于SQLite基础部分:SQLite基础学习 SQLite 的触发器是数据库的回调函数,它会自动执行/指定的数据库事件发生时调用。SQLite 的触发器可以指定在特定的数据库表发生 delet...
  • qq_17326933
  • qq_17326933
  • 2015年09月01日 21:24
  • 3325

oracle数据库触发器(trigger)用法总结

http://yedward.net/?id=116   触发器的意思就是当我们对数据库对象(一般是表或视图)进行insert、update、delete操作的时候,这些操作会相应的触发一些事件的...
  • zhanzhib
  • zhanzhib
  • 2015年09月25日 10:12
  • 10623

数据库(SQL)之trigger(触发器)的使用以及视图(view)的基本实现

对于触发器,首先需要明确的是一下几点: trigger_name 必须给触发器命令,最多64个字符,建议用表的名字_触发器类型的缩写方法命名。如ttlsa_posts_bi(表ttlsa_posts,...
  • u013816144
  • u013816144
  • 2015年12月05日 12:18
  • 1236

sqlite3触发器的使用

研究了一下osx下dock中应用的存储,位于~/Library/Application Support/Dock/下一个比较名字比较长的db文件中,之前简单的介绍过osx launchpad图标的删除...
  • dliyuedong
  • dliyuedong
  • 2014年10月29日 00:22
  • 10376

SQLite创建触发器 CREATE TRIGGER

CREATE TRIGGER sql-statement ::=CREATE[TEMP|TEMPORARY]TRIGGERtrigger-name[BEFORE|AFTER] database-ev...
  • L_serein
  • L_serein
  • 2012年11月09日 15:42
  • 4810
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:触发器(Trigger)(一)
举报原因:
原因补充:

(最多只允许输入30个字)