关于SQL Server数据库—事务
- 什么是数据库的事务?
- 事务有哪些特性 ?
- 事务常用语句有哪些?
- 如何在Spring配置文件中定义事务管理器?
- 代码演示
什么是数据库的事务?
事务是一系列的数据库操作,是数据库应用的基本逻辑单位,事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。
事务有哪些特性?
事务具有如下特性:(其中原子性最为重要)
1、原子性(atomicity) 一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。
2、一致性(consistency) 事务必须是使数据库从一个一致性状态变到另一个一致性状态。
3、隔离性(isolation) 一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
4、持久性(durability) 持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
事务常用语句有哪些?
- Begin Transaction:标记事务开始。
- Commit Transaction:事务已经成功执行,数据已经处理妥当。
- Rollback Transaction:数据处理过程中出错,回滚到没有处理之前的数据状态,或回滚到事务内部的保存点。
- Save Transaction:事务内部设置的保存点,就是事务可以不全部回滚,只回滚到这里,保证事务内部不出错的前提下。
————————————————
(版权声明:本文为CSDN博主「laizhixue」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/laizhixue/java/article/details/100729016)
如何在Spring配置文件中定义事务管理器?
a)JDBC及iBATIS、MyBatis框架事务管理器
<bean id="txManager" class="org.springframework.jdbc.datasource.
DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<tx:advice id=”txAdvice” transaction-manager=”txManager”>
<tx:attributes>
<tx:method name=”delete*” propagation=”REQUIRED” />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:cutpoint expression=”execution(* com.muke.mytest.service.impl*.*(..))” id=”pointcut1”>
<aop:advisor advice-ref=”txAdvice” pointcut-ref=”pointcut1” />
</aop:cutpoint>
</aop:config>
代码演示
--客户1转账给客户2 200元
select * from Customers
go
create proc cp_changeAccount
(
@idOut int,
@idIn int,
@Remain decimal(18,2)
)
as
--定义一个变量,记录错误数
declare @error_nums int
set @error_nums=0
--开始事务
begin transaction tran_change
begin try
update Customers set Remain=Remain-200
where id=1
set @error_nums=@error_nums+@@ERROR
update Customers set Remain=Remain+200
where id=2
set @error_nums=@error_nums+@@ERROR
end try
begin catch
set @error_nums=@error_nums+1
print '错误异常:' +error_number()+'错误消息'+error_message()
end catch
if(@error_nums>0) --表示前面有错
rollback transaction tran_change --回滚事务
else
commit transaction tran_change--执行事务