zoukankan      html  css  js  c++  java
  • 数据库札记(二)

    触发器不能用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语句并不修改具体的列。

  • 相关阅读:
    npm ci命令比npm installer命令快2至10倍
    Liferay 7.1发布啦
    2016/07/05 zend optimizer
    2016/06/16 phpexcel
    2016/06/13 phpexcel 未完待续
    2016/06/10 日历插件 Datepicker
    2016/06/09 ThinkPHP3.2.3使用分页
    2016/06/02 网摘记录 svn 服务器端 客户端 安装使用
    2016/05/27 php上传文件常见问题总结
    2016/05/25 抽象类与API(接口)差别
  • 原文地址:https://www.cnblogs.com/njucslzh/p/1900586.html
Copyright © 2011-2022 走看看