您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 数据库触发器的编写及用法
实验八触发器编程实验目的理解触发器的工作原理,掌握如何使用inserted表和deleted表及如何创建:INSERT、UPDATE、DELETE触发器。实验内容建立银行业务数据库bankdb,其中,帐户信息表(bank)存放帐户的信息,交易信息表(transInfo)存放每次的交易信息。1、当向交易信息表(transInfo)中插入一条交易信息时,自动更新对应帐户的余额。2、当删除交易信息表时,要求自动备份被删除的数据到表backupTable中。3、跟踪用户的交易,交易金额超过20000元,则取消交易,并给出错误提示。实验步骤1.建立一个银行的数据库并建立一张信息表和交易信息表createdatabasebankdbcreatetablebank(customervarchar(10),cardIDvarchar(10),currentMoneynumeric(8,4),constraintbank_pkprimarykey(cardID),)createtabletransInfo(tranDatedatetime,cardIDvarchar(10),transTypevarchar(10),transMoneynumeric(8,4),constrainttrans_pkprimarykey(cardID,tranDate),)2.插入张三和李四的信息insertintobankvalues('张三','10010001','1000.0000');insertintobankvalues('李四','10010002','3000.0000');3.对transInfo建立一个触发器实现自动更新对应帐户的余额createtriggerB_insertontransInfoforinsertasdeclare@tranDatedatetimedeclare@cardIDvarchar(10)declare@transTypevarchar(10)declare@transMoneynumeric(12,4)select@tranDate=tranDate,@cardID=cardID,@transType=transType,@transMoney=transMoneyfrominsertedif@transType='支出'updatebanksetcurrentMoney=currentMoney-@transMoneywherecardID=@cardIDelseupdatebanksetcurrentMoney=currentMoney+@transMoneywherecardID=@cardID;演示一下插入之前select*frombankinsertintotransInfovalues(getdate(),'10010002','存储',300)insertintotransInfovalues(getdate(),'10010001','支出',100)4.当删除交易信息表时,自动备份被删除的数据到表backupTable中建立一个表backupTablecreatetablebackuptable(tranDatedatetime,cardIDvarchar(10),transTypevarchar(10),transMoneynumeric(12,4))建立删除的触发器createtriggerA_deleteontransInfofordeleteasbegininsertintobackuptableselect*fromdeletedend;演示一下select*transInfodeletefromtransInfoselect*transInfo空表说明transInfo表里没有信息了select*frombackuptable被复制到backuptable5.跟踪用户的交易,交易金额超过20000元,则取消交易,并给出错误提示。对transInfo建立一个插入触发器createtriggererrorontransInfoforinsertasdeclare@transMoneynumeric(12,4)select@transMoney=transMoneyfrominsertedif@transMoney20000print'error!youtransMoney20000'rollback演示一下insertintotransInfovalues(getdate(),'10010001','支出',30000)select*frombank说明rollback起作用了里面的值并没有发生改变
本文标题:数据库触发器的编写及用法
链接地址:https://www.777doc.com/doc-4962989 .html