SQL Server显式事务行为

时间:2013-11-23 13:41:37

标签: sql sql-server transactions

我刚刚做了一次SQL考试,我真的很难处理两个关于交易的问题,它已经提交了,所以这只是为了我的理智......这些答案是什么?

很抱歉,如果这不应该在这里,或者这些应该是两个单独的问题。

1

Employee X has a salary of 40,000
a. User A begins a transaction and updates employee X's salary to salary * 1.1
b. User B begins a transaction and updates employee X's salary to salary * 1.25
c. User A rolls back their transaction
d. User B commits their transaction

员工X的薪水是多少? (我去了50,000,没有提到事务隔离级别)

2。 脚本构建如下 -

a. Transaction start
b. Insert record into table 1
c. Create savepoint
d. Insert record into table 2
e. Rollback to the save point created after the insert into table 1
f. Insert a record into table 3
g. Commit the transaction

哪些表是插入的记录? (我只和表1一起去过)

2 个答案:

答案 0 :(得分:6)

对于你的问题1,假设我们有默认的事务隔离级别,即Read Committed。你的答案是对的。

问题1

  
      
  1. 用户1开始交易而不提交
  2.   
  3. 用户2尝试更新相同的记录,但他的更新将被阻止,直到用户一回滚    他的交易,但一旦他回滚他的交易,它将更新为Salary * 1.25,即50000。
  4.   

问题2

  
      
  1. 使用保存点在表1中插入的​​记录表示是否回滚此事务      将不会回滚到最后保存的点。
  2.   
  3. 插入表2然后回滚,这会将插件回滚到表2中,但是      而不是表1中受保存点保护的插入。
  4.   
  5. 插入表3并提交。这将把表1和3中的插入内容保存到磁盘中。
  6.   

答案 1 :(得分:0)

抱歉,我没有得到你的第一个问题。

对于问题2,数据将插入table1和table3。