- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SQL第9章03
第九章 数据完整性 9.1 数据完整性:精确性和可靠性 9.2 规则:规定和限制 9.3 默认:无数据时自动显示 9.4 约束:限制数据的格式和值 9.5 触发器:通过事件触发过程化代码 9.5.3【inserted】表的功能 如某表定义了插入类型触发器,那么所有对该表插入操作,除了向该表插入记录外,还要将一个副本存放到插入表中,即插入表保存了一份向原表插入的记录内容。 use CCJ go create trigger mytrigger on aaa for insert as select * from inserted 9.5.4【deleted】表 如某表定义了删除类型触发器,若对该表执行了删除操作,则所有的被删除记录都存放到删除表中,目的是:一旦触发器遇到了强迫中止语句,则可以回滚删除操作 9.5.5【update】操作实质 插入和删除是基本操作,而更新则是一个复合操作。更新是由两个操作构成。 先将需要更新的记录删除;然后再将新值插入到表中。 use ccj go create trigger uptrigger on aaa for update as select * from inserted select * from deleted 9.5.6 删除和修改触发器 1、修改触发器 alter trigger trigger_name on (table-_name | view_name) { for { [delete][,][insert][,][update]} as sql_statement[…n]} 9.5.6删除和修改触发器 9.5.6删除和修改触发器 9.5.7 显示触发器 1.使用【企业管理器】查看触发器信息 9.5.7 显示触发器 2.使用系统存储过程查看触发器 (1)显示触发器的一般信息: sp_help trigger_name (2)显示触发器的文本: sp_helptext trigger_name (3)触发器存在哪个表上及触发器操作: sp_helptrigger table_name (4)显示表中各种依赖关系: sp_depends table_name 9.5.8 触发器与事务 为保证数据完整性,SQL Server在一个事务期间,凡是涉及到修改的页面都加了排它锁(X锁)。 排它锁又称为写锁(eXclusive lock,简记为X锁),若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。 在更新操作(INSERT、UPDATE 或 DELETE)过程始终应用排它锁。 相对于共享锁:共享锁又称读锁(Share lock,简记为S锁),若事务T对数据对象A加上S锁,则其它事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。 小结 本章介绍了数据完整性的重要性和维护数据完整性的各种方法: 数据完整性包括实体完整性、域完整性、参照完整性和用户定义完整性; 用create rule创建规则,用create default创建默认,在对象级和总体级上实现数据完整性;约束是对表中列属性的声明和限制,在对象级实现数据完整性; check约束限制列值的数据;primary key约束用来保证定义的列中没有空值,没有重复值; 触发器:instead of 、after;用create trigger创建触发器,用企业管理器创建触发器,删除和修改触发器;inserted表和deleted表的作用。 * * use ccj insert into aaa(xm,xb,nl) values(历历,女,19) select * from aaa use ccj go create trigger deletrigger on aaa for delete as select * from deleted use ccj delete from aaa where nl=18 use ccj update aaa set xm=567’ where nl=17 2、删除触发器: drop trigger {trigger_nam }{,…..n} 说明: 一个数据库中的触发器名称不可以重复; 当表被删除时,依附于它的触发器自动被删除。
文档评论(0)