- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* delete触发器的工作原理: 1.执行delete删除语句,删除表中的数据行; 2.触发delete删除触发器,向系统临时表的deleted表中插入被删除的副本 3.触发器检查deleted表中被删除的数据,确定是否需要回滚或执行其他操作。 * 提问:DELETE删除触发器的典型应用就是银行系统中的数据备份。当交易记录过多时,为了不影响数据访问的速度,交易信息表需要定期删除部分数据。当删除数据时,一般需要自动备份,以便将来的客户查询、数据恢复或年终统计等。如何实现呢? 引导回答:显然应在交易信息表上创建DELETE触发器,被删除的数据可以从deleted表中获取 * 讲解要点:和C语言的函数类比,学员容易接受。 * * 讲解要点: (1)执行速度快。 存储过程创建是就已经通过语法检查和性能优化,在执行时无需每次编译。 存储在数据库服务器,性能高。 (2)允许模块化设计。 只需创建存储过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次。存储过程可由在数据库编程方面有专长的人员创建,并可独立于程序源代码而单独修改 。 (3)提高系统安全性。 可将存储过程作为用户存取数据的管道。可以限制用户对数据表的存取权限,建立特定的存储过程供用户使用,完成对数据的访问。 存储过程的定义文本可以被加密,使用户不能查看其内容。 (4)减少网络流量: 一个需要数百行Transact-SQL代码的操作由一条执行过程代码的单独语句就可实现,而不需要在网络中发送数百行代码。 * sp—system proecdure系统过程 xp-eXtensible procedure扩展过程 (一般是在SQL Server环境外执行,如前面学过的xp_cmdshell ‘mkdir d:\project ) * 重点讲解蓝色标识的系统存储过程。 * 提问:在企业管理器中能修改数据库的名称吗? 演示:在企业管理器中能修改数据库的名称,结果修改不了。怎么办呢? 吸引学员,然后演示“示例1:常用的系统存储过程.sql”,逐行执行各条T-SQL语句。 在查询分析器中调用sp_renamedb系统存储过程修改数据库非常实用。 说明:执行时,需要单用户访问,最简单的办法就是执行SQL语句时关掉企业管理器。 * 说明: 1)什么是输入参数、输出参数,此处不讲,等学员对如何创建存储过程有一定的认识后, 后面再专门讲解。 2)告诉学员:和C语言的函数一样:我们需要先定义存储过程,然后再调用执行。 * 说明:笔试和机试都通过了60分才算通过。 * 讲解关键代码。 * 演示:示例3:不带参数的存储过程.sql * 讲解要点: C语言中,调用带参数的函数时,我们需要传递实际参数值给形式参数(形参)。 例如:调用求两个数之和的函数int sum(int a,int b ),求5和8之和, 则调用形式为:c=sum(5,8) ,返回值将赋值变量c 。 存储过程中的参数与此非常类似,存储过程中的参数分两种: 输入参数:可以在调用时向存储过程传递参数,即向存储过程传入值,类似C语言中按值传递; 输出参数:和C语言中的函数一样,如果希望返回值,则可以使用输出参数,输出参数后有OUTPUT标记, 存储过程执行后,将把返回值存放在输出参数中,可供其它T-SQL语句读取访问。 * 根据试卷的难度,我们希望笔试和机试的及格线应该是随时变化的,而不是固定的60分。 * 讲解关键代码 * * 讲解要点: 上述带参数的存储过程确实比较方便,调用者可以随时更改每次考试的及格线。但如果考试的难易程度合适,则调用者还是必须如此调用: EXEC proc_stu 60,60 这些显得比较麻烦,能不能在调用时,存储过程的参数变为可选呢?例如,如果调用形式为: EXEC proc_stu 55 --表示笔试及格线55分,机试及格线默认为60分 EXEC proc_stu 表示笔试和机试及格线都默认为标准的60分 提问学员:怎么办呢? 告诉学员:完全没问题。存储过程的输入参数允许您设置默认值 * 强调: 1.默认值放在参数的数据类型后面,而不是放在参数变量的后面。 2.为了调用的方便,推荐将默认参数放置在参数列表的最后 * * * 强调: 1.默认值放在参数的数据类型后面,而不是放在参数变量的后面。 2.为了调用的方便,推荐将默认参数放置在参数列表的最后 * 强调: 1.调用时也必须跟随关键字OUTPUT,否则SQL Server将视为输入参数。 * * 讲解要点: 再看一个例子:目前有两张表,分别存放在职员工和退休员工的信息。 假定现赵二退休:赵二将从员工表中删除。 一旦删除赵二的信息,应自动触发一个动作:将赵二的信息保存到退休员工表中。 强调:
文档评论(0)