数据库札记(二)

触发器不能用EXEC命令调用,而是在用户执行Transact-SQL语句时激活。数据操作语言(DML)触发器在

INSERT、UPDATE和(或)DELETE语句上激发。SQL Server能阻止不符合严格要求的数据修改,因为SQL Server

将触发器作为事务来对待。由于触发器被当作事务对待,所以只要在代码的相应位置添加一条ROLLBACK命令

,就可以阻止记录通过触发器。ROLLBACK命令强制数据库服务器停止处理修改操作,并禁止当前事务,进而

忘了该事务曾经发生过。从这个意义上说,可以将触发器理解为数据库看门狗。


INSERT触发器可以用来修改,甚至拒绝接受正插入的记录,甚至可以用来级联对数据库中的其他表的修改操

作。每当有人用INSERT语句在表中创建一条新记录时,INSERT触发器将激发。一旦用户试图在表中插入一条

新记录,SQL Server就将这条新记录复制到数据库内的一个表(触发器表)和内存中存储的一个特殊表(插入

表),新记录在这个两个表中同时存在:触发器表和插入表。插入表中的记录应该与触发器表中的记录完全

相同。当需要在整个数据库内将修改结果级联到其他表时,插入表是个非常重要的表。


DELETE触发器用于约束用户能够从数据库中删除的数据。添加了DELETE触发器后,SQL Server将正被删除的

记录转移到内存中的一个逻辑表(删除表),因此记录并没有彻底消失,而且仍可以在代码中引用它们。这类

似于回收站,但删除表在事务结束之后自动清除,回收站要我们手工清除。


UPDATE触发器用来约束用户所发布的UPDATE语句。这种类型的触发器专门用于约束用户能修改的现有数据。

UPDATE触发器所采用的方法组合了INSERT和DELETE触发器所采用的方法。IF UPDATE用来检查单个列上发生

的更新。IF UPDATE不仅可以用在UPDATE触发器中,还可以用在INSERT触发器中,不必尝试在DELETE触发器

中使用IF UPDATE语句,因为DELETE语句并不修改具体的列。

posted on 2010-12-08 20:01  小交响曲  阅读(166)  评论(0编辑  收藏  举报

导航