1.什么是事务?(事务的定义)如果要提交或取消一个事务,使用什么语句?
答:事务处理是数据库的主要工作,事务由一系列的数据操作组成,是数据库应用程序的基本逻辑单元,用来保证数据的一致性。
提交或取消一个事务:COMMIT TRANSACTION或ROLLBACK TRANSACTION语句。
事务的4个原则:原子性,一致性,隔离性,持久性
事务的开始语句,结束语句
事务的并发控制:为什么要并发控制,并发控制的实现方法(加锁,封锁)
2.事务分为哪几类?
答:根据系统的设置,SQL Server 2008将事务分为两种类型:系统提供的事务和用户定义的事务。
根据运行模式的不同,SQL Server 2008将事务分为4种类型:显示事务、隐式事务、自动提交事务和批处理级事务。
3.简述事务回滚机制。
答:(1)如果不指定回滚的事务名称或保存点,则ROLLBACK TRANSACTION命令会将事务回滚到事务的起点。
(2)在嵌套事务时,该语句将所有内层事务回滚到最远的BEGIN TRANSACTION语句,transaction_name也只能是来自最远的BEGIN TRANSACTION语句的名称。
(3)在执行COMMIT TRANSACTION语句后不能回滚事务。
(4)如果在触发器中发出ROLLBACK TRANSACITON命令,将回滚对当前事务中所做的所有数据修改,包括触发器所做的修改。
(5)事务在执行过程中出现任何错误,SQL Server都将自动回滚事务。
4.简述锁机制,锁分为哪几类。
答:锁是防止其他事务访问指定的资源、实现并发控制的一种手段,是多个用户能够同时操纵同一个数据库中的数据而不发生数据不一致现象的重要保障。
锁分为(1) 共享锁(Shared Lock)(2) 排它锁(Exclusive Lock)(3) 更新锁(Update Lock)(4) 意向锁(Intent Lock)(5) 模式锁(Schema Lock)(6) 大容量更新锁(Bulk Update Lock)
5.分析各类锁之间的兼容性。
在一个事务已经对某个对象锁定的情况下,另一个事务请求对同一个对象的锁定,此时就会出现锁定兼容性问题。当两种锁定方式兼容时,可以同意对该对象的第二个锁定请求。如果请求的锁定方式与已挂起的锁定方式不兼容,那么就不能同意第二个锁定请求。相反,请求要等到第一个事务释放其锁定,并且释放所有其他现有的不兼容锁定为止。详细内容见书表11-1 。
6.简述死锁及其解决办法。
答:产生死锁的情况一般包括以下两种:
第一种情况,当两个事务分别锁定了两个单独的对象,这时每一个事务都要求在另外一个事务锁定的对象上获得一个锁,因此每一个事务都必须等待另外一个事务释放占有的锁,这时,就发生了死锁。这种死锁是最典型的死锁形式。
第二种情况,当在一个数据库中时,有若干个长时间运行的事务执行并行的操作,当查询分析器处理一种非常复杂的查询例如连接查询时,那么由于不能控制处理的顺序,有可能发生死锁现象。
在数据库中解决死锁常用的方法有:
(1)要求每个事务一次就将要使用的数据全部加锁,否则就不能继续执行。
(2)允许死锁发生,系统来用某些方式诊断当前系统中是否有死锁发生。
7.创建一个事务,将所有女生的考试成绩都加5分,将所有男生的考试成绩都减5分,并提交。
答:
BEGIN TRANSACTION
USE teaching
UPDATE sc SET score=score+5
WHERE sno in (SELECT sno FROM student WHERE ssex=’女’)
UPDATE sc SET score=score-5
WHERE sno in (SELECT sno FROM student WHERE ssex=’男’)
COMMIT TRANSACTION
8.创建一个事务,向商品表中添加一条记录,设置保存点;再将商品编号为“ds-001”的单价改为“2000”。
答:
BEGIN TRANSACTION
USE inventory
INSERT INTO goods(gno,gname,price,producer)
VALUES('bx-159',' 冰箱', 2500,'安徽美菱')
SAVE TRAN savepoint
UPDATE goods SET price=2000 WHERE gno= ' ds-001'
COMMIT