SQLSERVER学习八:事务和锁
1、对事务的理解:要么都成功,要么都失败;一荣俱荣,一损俱损;
2、事务的四种模式:
- 显式事务:每个事务均以BEGIN TRAN语句显示开始,以COMMIT或ROLLBACK语句显示结束
- 隐式事务:在前一个事务完成时新事务隐式启动,但每个事务仍以COMMIT或ROLLBACK语句显示结束
- 自动提交事务:每条单独的语句都是一个事务
- 批处理级事务:只能应用于多个活动结果集,······
3、事务的特点或属性:原子性、一致性、隔离性、持久性
4、常用例子(事务要尽可能的简短)
BEGIN TRAN --开启一个没有名称的事务 INSERT INTO [dbo].[Table_1] VALUES (N'9', N'10'); ROLLBACK TRAN; --回滚 --COMMIT TRAN;--提交 BEGIN TRAN tran_add; --开启一个名为 tran_add 的事务 INSERT INTO [dbo].[Table_1] VALUES (N'5', N'6'); SAVE TRAN one;--设置一个保存点one INSERT INTO [dbo].[Table_1] VALUES (N'7', N'8'); ROLLBACK TRAN one;--回滚至保存点one COMMIT TRAN tran_add;--提交
5、锁(解决多个用户同时对数据库的并发操作时会带来以下数据不一致的问题:丢失更新、脏读、不可重复读 )