Sql基础代码 第九章 触发器_第1页
Sql基础代码 第九章 触发器_第2页
Sql基础代码 第九章 触发器_第3页
Sql基础代码 第九章 触发器_第4页
Sql基础代码 第九章 触发器_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Sql基础代码目录第一章建库建表21.1 数据库的应用21.1.1创建数据库21.1.2查询数据库31.1.3删除数据库31.2 表的运用41.2.1创建表41.2.2删除表51.3 约束61.3.1五种约束61.3.2约束的使用6第二章数据查询82.1 建表和插入数据82.1.1建立学生信息表82.1.2插入信息92.2 查询运用112.2.1数据查询112.2.2单表查询122.2.3连接查询132.2.4操作结果集查询182.2.5嵌套查询182.3数据库更新19第三章函数193.1 五种函数的运用193.1.1字符串函数203.1.2数学函数213.1.3日期函数223.1.4系统函数

2、233.1.5聚合函数24第四章变量254.1局部变量264.2全局变量27第五章循环语句305.1统计平均成绩305.2提分315.3根据成绩显示等级35第六章存储过程366.1 存储过程的应用366.1.1系统存储过程366.1.2Sp_helptext的使用406.1.3创建存储过程416.2 raiserror语句的应用45第七章exists子查询467.1exists子查询的应用467.2求银行利息497.3 变量查询517.4 查询考试通过情况537.5 循环提分557.6 通过率57第八章事物588.1使用事物解决银行转账59第九章触发器609.1检测触发器629.2创建触发器6

3、29.3触发器delete运用649.4触发器update运用659.5触发器禁止修改运用66第九章 触发器9.1 检测触发器-检测是否存在:触发器存放在系统表sysobjects中if exists(select name from sysobjectswhere name=trig_transinfo)drop trigger transinfo9.2 创建触发器-创建触发器来进行交易支取create trigger trig_transinfoon transinfo for insertasdeclare type char(4)declare outmoney moneydeclar

4、e mycardid char(10)declare balance moneyselect type=transtype,outmoney=transmoney,mycardid=cardid-需要那个inserted临时表中获取插入的记录行信息:宝货交易类型、卡号from insertedif(type=支取)-根据交易类型是支取/存入,坚守或增加账户表-需要判断取钱的金额与账户当前余额进行比较update bank set currentmoney=currentmoney-outmoneywhere cardid=mycardidelseupdate bank set currentm

5、oney=currentmoney+outmoneywhere cardid=mycardidif error0-显示交易金额及余额beginprint交易失败rollback transactionreturnendprint交易成功!交易金额:+convert(varchar(20),outmoney)select balance=currentmoney from bank where cardid=mycardidprint卡号+mycardid+ 余额:+convert(varchar(20),balance)goselect*from transinfoselect*from ba

6、nkinsert into transinfovalues(,支取,200,getdate()9.3 触发器delete运用-当删除交易信息表时,要求自动备份被删除的数据到表backuptable中/*分析 在交易信息表上创建delete触发器 被删除的数据可以从deleted表中获取*/create trigger trig_delete_transinfoon transinfofor deleteasprint开始备份数据,请稍后if not exists(select*from sysobjectswhere name=backuptable)select*into backuptab

7、le from deletedelseinsert into backuptable select*from deletedprint备份数据成功,备份表中的数据为:select*from backuptablegoselect*from transinfodelete from transinfo9.4 触发器update运用/*跟踪用户的交易,交易金额超过元,则取消交易,给出错误提示。 分析: 在bank表上创建update触发器 修改前的数据可以从deleted表中获取 修改后的数据可以从inserted表中获取*/create trigger trig_update_bankon ba

8、nkfor updateasdeclare beforemoney money,aftermoney money-从deleted表中获取交易前的余额,从inserted表中获取交易后的余额select beforemoney=currentmoney from deletedselect aftermoney=currentmoney from insertedif abs(aftermoney-beforemoney)20000-交易金额是否大于万beginprint交易金额:+convert(varchar(8),abs(aftermoney-beforemoney) raiserror

9、(每笔交易不能超过万元,交易失败,16,1)rollback transaction-回滚事物,撤销交易endgoselect*from bankupdate bank set currentmoney=50000 where cardid=-交易大于5万,交易错误,结束交易update bank set currentmoney=5000 where cardid=-交易成功9.5 触发器禁止修改运用-交易日期一般有系统自动产生,默认为当前日期。为了安全期间,一般禁止修改,以防舞弊。-分析:update(列名)函数可以检测是否修改了某列create trigger trig_update_transinfoon transinfofor updateasif update(transdate)beginprint交易失败raiserror(安全警告:交易日期不能修改由系统自动产生,16,1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论