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

数据库系统工程师 责任编辑:q459565833 2015-12-31

添加老师微信

备考咨询

加我微信

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

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

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

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

 

    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年软考数据库系统工程师知识点汇总

 

相关推荐:

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

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

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


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

软考备考资料免费领取

去领取

!
咨询在线老师!