欢迎来到天天文库
浏览记录
ID:22362848
大小:84.00 KB
页数:14页
时间:2018-10-28
《《高性能的数据库》四》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、《高性能的数据库》四>>教育资源库 第四讲编程细节 触发器 游标 函数 存储过程 事务 1、触发器。 定义:何为触发器?在SQLServer里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。 常见的触发器有三种:分别应用于Insert,Update,Delete事件。(SQLServer2000定义了新的触发器,这里不提) 我为什么要使用触发器?比如,这么两个表:CreateTableStudent(--学生表StudentIDintprimarykey,--学号....
2、)CreateTableBorroe,--借出时间ReturnDAteDatetime,--归还时间...) 用到的功能有: 1.如果我更改了学生的学号,我希望他的借书记录仍然与这个学生相关(也就是同时更改借书记录表的学号); 2.如果该学生已经毕业,我希望删除他的学号的同时,也删除它的借书记录。 等等。 这时候可以用到触发器。对于1,创建一个Update触发器:CreateTriggertruStudentOnStudentforUpdate ----------------------------------------
3、--------------- --Name:truStudent --func:更新Borro --Memo:临时写写的,给大家作个Sample。没有调试阿。 -------------------------------------------------------AsifUpdate(StudentID)beginUpdateBorroBorroe:trdStudent --func:同时删除Borro --Memo:临时写写的,给大家作个Sample。没有调试阿。 ------------------------
4、-------------------------------AsDeleteBorroBorroandText:='Select*FromStudentorderbyStudentID';adoDataSet1.Open;e('StudentID').AsInteger;DoSomeThing();....adoDataSet1.Next;End 在SQLServer并没有很好的数据逐条访问机制,如果有,那就是游标。 还是举例子: 对于表CreateTableBorrowRecord(--学生借书
5、记录表BorrowRecordintidentity(1,1),--流水号StudentIDint,--1234下一页>>>>这篇文章来自..,。学号StudentFeeIDint,--费用结算号(外键)Borroe,--借出时间ReturnDAteDatetime,--归还时间FeeMoney--借书费用...)CreateTableStudentFee(--学生费用结算表StudentFeeIDintprimarykey,--费用结算号(主键)StudentIDint,--学号Borroe:一部分代码 --func:更新学生借书总
6、费用 --Use: --User: --Memo:临时写写的,给大家作个Sample。没有调试阿。 ------------------------------------------------------- --声明一个游标DeclarecurStudentFeeCursorforSelectStudentFeeIDFromStudentFee --声明两个费用变量DeclaremBorroBorrocurStudentFeeIntoiStudentFeeID Borro(BorroBorroBorrocurStude
7、ntFeeIntomFeeend --关闭游标 ClosecurStudentFee --释放游标 DeallocatecurStudentFee 关注游标的要点:1、声明、打开、关闭、释放;2、Fetch_Status游标提取状态标志,0表示正确 这里,我也要提到,我不鼓励使用游标。更多的情况下,在SQL2000里面,函数已经能够实现绝大部分游标的功能。 3、函数。 函数是SQL2000的新功能。一般的编程语言都有函数,我就不用解释函数是什么东东了。:) 或许不少朋友会问:我用存储过程不就可以了么,我为什么要使用函数
8、? 这里特别指出的一点:fn可以嵌套在Select语句中使用,而sp不可以。 这里不打算大批特批一番游标了,当然,在我的程序里面,基本抛弃了游标(这里特别说明,是基本!因为还是有很多地方费用导游表不可的
此文档下载收益归作者所有