数据库系统概论王珊第五版学习笔记 下载本文

drop function people

4.触发器。

Create trigger XXX On table

[ for /after /instead of ] Insert,delete,update As 触发器实际需要触发内容

For:用法同after

After:执行完sql语句之后进行检查,检查不符合条件的话回滚 roll back 。after触发器只能在表上指定。

Instead of :指定触发器时代替SQL语句执行的,其优先级高于触发语句的操作。 例:

为 student表建立触发器T1,当插入或更新表中的数据时,保证所操作的记录的sage值大于0。 create trigger T1 on student after insert,update as begin

declare @sage int

select @sage = inserted.sage from inserted if(@sage < 0) begin

print '年龄错误' rollback transaction

end

end

update student set sage = 38 where sno = '01'

insert into student(sno,sname,ssex,sage,sdept) values('2007011','张三','男',55,'ma')

为student表建立触发器T2,禁止删除编号为“0001”的学生。 insert into student(sno,sname,ssex,sage,sdept) values('0001','傻大个','男',19,'is')

create trigger T2 on student after delete as begin

declare @sno char(10)

select @sno = deleted.sno from deleted if(@sno = '0001')

begin

print '禁止删除学号0001信息' rollback transaction

end

end

delete student where sno = '0001'

drop trigger T2

第十章

1.事务。

是一系列的数据库操作,是数据库应用程序的基本逻辑单元。

是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割

的工作单元。 2.事务的四个特性。

原子性:事务是数据库的逻辑工作单位,事务总包括的诸操作要么全做,要么全不做。 一致性:数据库只包含成功事务提交的结果,就说数据库处于一致性状态。

隔离性:一个事务的执行不能被其他事务干扰。即一个事务的内部操作及使用的数据对

其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。

持续性:指一个事务一旦提交,他对数据库中数据的改变就应该是永久性的。

事务是恢复和并发控制的基本单位。 3.数据库恢复。

把数据库从错误状态恢复到某一已知的正确状态的功能。

1. 运行事务非正常中断。 2. 数据丢失。

4.故障种类。

运行事务非正常中断----------恢复-事务撤销。 系统故障、介质故障、计算机病毒。

5.恢复实现技术。

数据恢复的基本原理:冗余。

建立冗余数据最常用的技术是数据转储和登记日志文件。

6. 数据转储。

静态转储:是在系统中无运行事务时进行的转储操作。

动态转储:是指转储期间允许对数据库进行存取或修改。即转储和用户事务可以并发执

行。

海量转储:每次转储全部数据库。

增量转储:指每次只转储上一次转储后更新过的数据。

7.日志文件。

是用来记录事务对数据库的更新操作的文件。 在事务故障恢复和系统故障恢复必须用日志文件。

在动态转储方式中必须建立日志文件,后备副本和日志文件结合起来才能有效地恢复数

据库。

在静态转储中也建立日志文件……

8.登记日志文件(对数据库的操作记录)。

登记的次序严格按并发事务执行的时间次序。 必须先写日志文件,后写数据库。

9.事务故障的恢复。

恢复子系统应利用日志文件撤销此事务已对数据库进行的修改,系统自动进行。

10.系统故障恢复。

导致故障原因可能有两个:

1. 未完成事务对数据库的更新可能已写入数据库。

2. 已提交事务对数据库的更新可能还留在缓冲区没来得及写入数据库。

恢复策略是 撤销故障发生时未完成的事物,重做已完成的事物。 11.介质故障的恢复。

数据库副本。

第十一章

1. 并发操作带来的数据不一致性。 并发操作破坏了事务的隔离性。

丢失修改:两个事务同时读入同一数据并修改,T2提交的结构破坏了T1提交的结果,

导致T1的修改被丢失。

不可重复读:事务1读取数据后,事务2执行更新操作,使T1无法再现前一次读取结

果。

读脏数据:事务1修改某一数据并将其写回磁盘,事务2读取同一数据后,T1由于某