首页 > 知识点讲解
       创建触发器
知识路径: > 数据库技术 > 数据库标准语言—SQL > 触发器 > 创建与删除触发器 > 
相关知识点:4个      
        对于示警或满足特定条件下自动执行某项任务来讲,触发器是非常有用的机制。其定义包括两个方面:指明触发器的触发事件,指明触发器执行的动作。
        触发事件包括表中行的插入、删除和修改,即执行INSERT、DELETE、UPDATE语句。在修改操作(UPDATE)中,还可以指定特定的属性或属性组的修改为触发条件。事件的触发还有两个相关的时间:Before和After。Before触发器是在事件发生之前触发,After触发器是在事件发生之后触发。创建触发器语句格式如下:
        
        说明:
        (1)BEFORE:指示DBMS在执行触发语句之前激发触发器。
        (2)AFTER:指示DBMS在执行触发语句之后激发触发器。
        (3)DELETE:指明是DELETE触发器,每当一个DELETE语句从表中删除一行时激发触发器。
        (4)INSERT:指明是INSERT触发器,每当一个INSERT语句向表中插入一行时激发触发器。
        (5)UPDATE:指明是UPDATE触发器,每当UPDATE语句修改由OF子句指定的列值时,激发触发器。如果忽略OF子句,每当UDPATE语句修改表的任何列值时,DBMS都将激发触发器。
        (6)REFERENCING<临时视图名>:指定临时视图的别名。在触发器运行过程中,系统会生成两个临时视图,分别存放被更新值(旧值)和更新后的值(新值)。对于行级触发器,默认临时视图名分别是OLD和NEW;对于语句级触发器,默认临时视图名分别是OLD-TABLE和NEW-TABLE。一旦触发器运行结束,临时视图就不在。
        (7)WHEN<触发条件>:指定触发器的触发条件。当满足触发条件时,DBMS才激发触发器。触发条件中必须包含临时视图名,不包含查询。
        账户关系模式Account中的属性Account-no表示账号,branch-name表示支行名称,balance表示余额。贷款关系模式Loan中的属性Loan-no表示贷款号,branch-name表示支行名称,amount表示金额。存款关系模式depositor中的属性customer-name表示存款人姓名。SQL-99创建触发器如下所示:
        
        例8.29说明:When语句指定一个条件nrow.balance<0。仅对满足条件的元组才会执行余下的触发器;Begin atomic…end子句用来将多行SQL语句集成为一个复合语句,该子句中的两条Insert into语句执行了在borrower和loan关系中建立新的贷款业务;update语句用来将账户余额清零;Referencing old row as子句可以建立一个变量用来存储已经被更新或删除行的旧值。Referencing new row as子句可以被update、Insert语句使用。
        Referencing old table as或Referencing new table as子句可以用来指向临时表(也称过渡表)来容纳所有被影响的行。无论临时表是语句触发器还是行触发器,它们都不能用before触发器,但是可以用after触发器。
        触发器事件和动作可以有很多形式,除了update以外还可以是Insert、delete。例如,如果有一个新的用户存款插入时,触发器动作可以给用户发一封欢迎信。显然一个触发器不能直接对数据库之外的事情进行操作,但是它可以在存储待发欢迎信地址的关系中添加一个元组。一个专用进程会检查这个表,打印出要发出的欢迎信。
        触发器在事件(update、Insert和delete)之前被激发,而不是在事件之后。这种触发器可作为避免非法更新的额外约束。例如,有时用户不允许透支,此时,可以建立一个before触发器在新的余额是负数时回滚事务。
 
 相关知识点:
 
软考在线指南
优惠劵及余额
在线支付
修改密码
下载及使用
购买流程
取消订单
联系我们
关于我们
联系我们
商务合作
旗下网站群
高级资格科目
信息系统项目管理师 系统分析师
系统架构设计师 网络规划设计师
系统规划与管理师
初级资格科目
程序员 网络管理员
信息处理技术员 信息系统运行管理员
中级资格科目
系统集成项目管理工程师 网络工程师
软件设计师 信息系统监理师
信息系统管理工程师 数据库系统工程师
多媒体应用设计师 软件评测师
嵌入式系统设计师 电子商务设计师
信息安全工程师
 

本网站所有产品设计(包括造型,颜色,图案,观感,文字,产品,内容),功能及其展示形式,均已受版权或产权保护。
任何公司及个人不得以任何方式复制部分或全部,违者将依法追究责任,特此声明。
本站部分内容来自互联网或由会员上传,版权归原作者所有。如有问题,请及时联系我们。


工作时间:9:00-20:00

客服

点击这里给我发消息 点击这里给我发消息 点击这里给我发消息

商务合作

点击这里给我发消息

客服邮箱service@rkpass.cn


京B2-20210865 | 京ICP备2020040059号-5 |京公网安备 11010502032051号 | 营业执照 | Copyright ©2000-2023 All Rights Reserved 软考在线版权所有