zoukankan      html  css  js  c++  java
  • 触发器

    触发器

      其是一种特殊的存储过程。一般的存储过程是通过存储过程名直接调用,而触发器主要是

      通过事件(增、删、改)进行触发而被执行的。其在表中数据发生变化时自动强制执行。

      常见的触发器有两种:after(for)、instead of,用于insert、update、delete事件。

      after(for)        表示执行代码后,执行触发器

      instead of        表示执行代码前,用已经写好的触发器代替你的操作

    触发器语法:

      create trigger 触发器的名字   on 操作表

      for|after         instead of

      update|insert|delete

      as

      SQL语句

    触发器实现原理图

    触发器示例

    Example1

    --禁止用户插入数据(实际上是先插入,然后立刻将其删除!)

      create trigger tr_insert on bank

      for          --for表示执行之后的操作

      insert       --即先执行了插入操作,同时在临时表中保存了插入记录

      as

       --执行完插入之后,在新生成的表中将刚刚插入的那条记录删除,

       --而此时得到的刚刚插入的记录的id是通过临时表 inserted得到的

      delete * from bank where cid=(select cid from inserted)

      生成上面的触发器后,当用户再输入insert语句后就见不到效果了!

      如:insert into bank values('0004',10000),是插入不进数据库的。

    Example2

    --删除谁就让谁的账户加上10元

      create trigger tr_dalete on bank

      instead of

      delete

      as

      update bank balance=balance+10 where cid=(select cid from deleted)

      生成这个触发器之后,当用户输入delete语句后,对应的那个id不但没有被删除掉,而且他的账户增加了10元

      如:delete from bank where cid='0002',执行完这句话后,编号为0002的账户会增加10元

  • 相关阅读:
    gThumb 3.1.2 发布,支持 WebP 图像
    航空例行天气预报解析 metaf2xml
    Baruwa 1.1.2 发布,邮件监控系统
    Bisect 1.3 发布,Caml 代码覆盖测试
    MoonScript 0.2.2 发布,基于 Lua 的脚本语言
    Varnish 入门
    快速增量备份程序 DeltaCopy
    恢复模糊的图像 SmartDeblur
    Cairo 1.12.8 发布,向量图形会图库
    iText 5.3.4 发布,Java 的 PDF 开发包
  • 原文地址:https://www.cnblogs.com/youngerger/p/8968877.html
Copyright © 2011-2022 走看看