数据库原理-6new.ppt

  1. 1、本文档共68页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库原理-6new

6.1 Transact-SQL 6.2 存储过程 6.3 触发器 6.4 数据库应用系统结构 6.5 ODBC、JDBC简介 6.2 存储过程 SQL语言是高度非过程化的语言,有它的优点就是非常简洁,容易学,但是对于程序设计来说,如果只有非过程化的语言,有些功能它没办法很好的完成,解决办法有几种: 嵌入式SQL 存储模块—存储过程或函数 调用接口 修改过程 Alter PROCEDURE addAllSage AS BEGIN update student set sage=sage+1 END declare @tid varchar(30),@out int set @tid=计算机系 exec addDeptSageCount @tid,@out OUTPUT print @out go 执行时: Execute 过程名 go 6.3、触发器 触发器是一种特殊类型的存储过程。一般的存储过程通过存储过程名称被直接调用,而触发器主要是通过当某个事件发生时自动被触发执行的。触发器可以用于SQL Server约束、默认值和规则的完整性检查,还可以完成难以用普通约束实现的复杂功能。 当对某一个表进行诸如UPDATE、INSERT、DELETE这些操作时,SQL Server就会自动执行触发器所定义的T-SQL语句,从而确保对数据的处理必须符合由这些T-SQL语句所定义的规则。 触发器的优点 使用触发器有以下优点: 触发器是自动执行的。 触发器可以通过数据库中的相关表进行层叠更改。 触发器可以强制限制。这些限制比用CHECK约束所定义的更复杂。 触发器分类: AFTER触发器 INSTEAD OF触发器 当在INSERT、UPDATE、DELETE语句执行之后才执行DML触发器的操作时,这种触发器的类型就是AFTER触发器。AFTER触发器只能在表上定义。 如果希望使用触发器操作代替触发事件操作,可以使用INSTEAD OF类型的触发器。也就是说,INSTEAD OF触发器可以替代INSERT、UPDATE和DELETE触发事件的操作。INSTEAD OF触发器既可以建在表上,也可以建在视图上。通过在视图上建立触发器,可以大大增强通过视图修改表中数据的功能。 DML 触发器使用 deleted 和 inserted 逻辑表。它们在结构上和触发器所在的表的结构相同,SQL Server会自动创建和管理这些表。可以使用这两个临时的驻留内存的表测试某些数据修改的效果及设置触发器操作的条件。 Deleted表用于存储delete,update语句所影响的行的副本。在执行delete或update语句时,行从触发器表中删除,并传输到deleted表中。 Inserted表用于存储Insert或update语句所影响的行的副本,在一个插入或更新事务处理中,新建的行被同时添加到Inserted表和触发器表中。Inserted表中的行是触发器表中新行的副本。 理解触发器里面的两个临时的表: Deleted , Inserted 注意Deleted 与Inserted分别表示触发事件的表“旧的一条记录”和“新的一条记录”。 一个数据库系统中有两个虚拟表用于存储在表中记录改动的信息,分别是: ???????????????????????????? ???? ???????????????????????? ???????? ? ??????? ???????? ??????????????????????????????? 例1:防止删除管理员 create trigger tr_no_update on users after delete,update as if exists(select * from users where users_id=admin) begin raiserror(不能删除或修改管理员,16,1) rollback transaction end go select * from users go update users set users_id=test where users_id=yy Go 创建前面的触发器之后,做删、改时如果修改的数据是admin,则触发器自动生效,无法修改 例2:两张关联表,修改其中的一张表数据,另一表数据联动(相应调整) create trigger tr_withdrwa on 交易信息 after insert as declare @id varchar(20),@dw_num money select @id=帐号

文档评论(0)

wyjy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档