SQL数据库——事务

关于SQL Server数据库—事务

  1. 什么是数据库的事务?
  2. 事务有哪些特性 ?
  3. 事务常用语句有哪些?
  4. 如何在Spring配置文件中定义事务管理器?
  5. 代码演示

什么是数据库的事务?

事务是一系列的数据库操作,是数据库应用的基本逻辑单位,事务由事务开始(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>

代码演示

SQL数据库——事务_第1张图片

--客户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--执行事务


SQL数据库——事务_第2张图片

你可能感兴趣的:(sql,数据库)