专注在线职业教育25年
下载APP
小程序
希赛网小程序
导航

2016年软考数据库系统工程师知识点详解:触发器

责编:q459565833 2015-12-31

  >>>>>数据库系统工程师历年真题

>>>>>数据库系统工程师网络课程

>>>>>数据库系统工程师视频课程

 

    2016年软考数据库系统工程师知识点详解:触发器

    触发器,触发器是一种特殊类型的存储过程,它是通过事件触发而执行的。主要特点是,当被声明的事件发生时触发器被激活;触发器激活后不会立即执行,而是先测试触发条件;如果触发条件满足,则由DBMs执行与该触发器相连的动作。

    创建触发器,不同数据库使用的触发器语法不同。

    例:假定银行数据库关系模式为: Account(Account-no,branch-name,balance)

    Loan(Loan-no,branch-name,amount)

    depositor(customer-name,Account-no)

    假定银行在处理透支时,不是将账户余额设成负值,而是将账户余额设置为零,并且建立一笔贷款,其金额为透支金额。这笔贷款的贷款号应该等该透支帐户的账户号。采用SQL-99标准创建触发器如下:

    CREATETRIGGERoverdraft_triggerafterupdateonAccount

    Refferencingnewrowasnrow

    Foreachrow

    Whennrow.balance<0

    Begainatomic

    Insertintoborrower

    (SELECTcustomer-name,Account-no

    FROMdepositor

    Wherenrow.account-no=depositor.account-no);

    Insertintovalues

    (nrow.account-no,nrow.branch-name,nrow.balance);

    updateaccountsetbalance=0

    Whereaccount.account-no=nrow.account-no

    End

    Whennrow.balance<0是触发条件;

    Beginatomic...End子句用来将多行SQL语句集成为一个复合语句。其中前两条Insertinto语句表示在borrower和loan关系中建立新的贷款业务,update语句用来将账户余额清零。

    Referencingoldrowas子句建立一个变量,用来存储已经被更新或删除的行的旧值。Referencingnewrowas可以被update和Insert语句使用,可以存放经过更新的新值。

    Referencingoldtableas或Referencingnewtableas子句可以用来指向临时表,使之容纳所有被影响的行。临时表不能使用before触发器,但可以用after触发器。

    触发器在事件之前被激发,可以避免非法更新。

    例9.45:仓库管理数据库中有如下关系,

    inventory(item,level),表示仓库中某种商品的现有量。

    minlevel(item,level),表示仓库中存有某种商品的量小量。

    reorder(item,amount),表示某种商品小于最小量时要订购的数量。

    orders(item,amount),表示定购某种商品的量。

    CREATETRIGGERreorder_triggerafterupdateofamountoninventory--我怀疑amount应该是level

    Referencingoldrowasorow,newrowasnrow

    Foreachrow

    Whennrow.level<=(SELECTlevel

    FROMminlevel

    Whereminlevel.item=orow.item)

    Andorow.level>(SELECTlevel

    FROMminlevel

    Whereminlevel.item=orow.item)

    Begin

    Insertintoorders

    (SELECTitem,amount

    FROMreorder

    Wherereorder.item=orow.item)

    End

    删除触发器: DROPTRIGGER{trigger}[,...,n]


    >>>>>点击返回2016年软考数据库系统工程师知识点汇总

 

相关推荐:

>>>>>数据库系统工程师培训视频教程

>>>>>数据库系统工程师考试考前串讲

>>>>>数据库系统工程师考试下午知识点精讲与考前必练


软考不知道考啥科目?扫码测最适合你的报考科目

企业微信截图_1770345743610.png

通关资源:软考各科历年真题各科学习资料汇总  |  在线试题库【点击刷题】

免费课程:系统架构设计师报考指南2026年高项备考指导课及精讲试听  

热门活动: 春节不打烊 海量课程免费畅学hotgif.gif

更多资料
更多课程
更多真题
温馨提示:因考试政策、内容不断变化与调整,本网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!
相关阅读
查看更多

加群交流

公众号

客服咨询

考试资料

每日一练

咨询客服