1.事务
1.概念
作为单个逻辑工作单元执行的一系列操作(作为一个整体执行sql语句的要么全部执行,要么全不执行)
2.什么情况使用显示事务
一个操作执行多条新增,修改,或者删除的时候需要使用显示事务
3.事务的特性
ACID
原子性(Atomicity),一致性(Consistency),隔离性(lsolation),永久性()
4.主要的语句
begin transaction,commit transaction,rollback transaction
例如:
declare @errorSum int
set @errorSum = 0
begin transaction
update bank set currentMoney = currentMoney + 100 where id=1
set @errorSum = @errorSum + @@error确定语句是否会出错,看最后errorSum是否还是最初的值
update bank set currentMoney = currentMoney - 100 where id=2
set @errorSum = @errorSum + @@error每一句的sql都要带上这一句
if @errorSum = 0
begin
print (“没有错误,提交”)
commit transaction
end
else
begin
print (“错误,回滚”)
rollback transaction
end
如果有三个人去钟楼,其中一个人已经到达钟楼了,而有一个人却半路车坏了不能去了,而第三个人在半路上,那么最后因为有一个人不能去了,所以另外两个人不管在哪都会回到起点,即使已经有人到达了重点。即是事务的一致性特点,只要有一个语句不能执行那么其他的语句都要回到最开始没有执行的状态,即使已经有一条语句执行了。
5.事务的类别
显示事务,隐示事务(自动提交事务)
执行一条语句是隐示事务
6.java中进行事务的控制
con.setAutoCommit(false)
con.commit()
con.rollback()
Ctrl +1 可以try catch 块
Ctrl + t 可以找到接口的实现类
找到Driver接口,然后找到实现类,然后在界面调用这个实现类,出现一个import 后面的东西就是class.forname
里面的东西;
在一开始,con.getAutoCommit()为true,即默认自动提交
流程:*
1.con.setAutoCommit(false)
2.执行sql语句
3.如果没有异常那么直接con.commit()
(记住如果将自动提交改为了false,那么一定要有提交这一句话,不然数据库是不会有变化的)
如果有异常即把con.rollback() 放到异常块里处理
statement 可以不一样,但是必须保证connection是一样的,保证执行多条sql的tistatement是由同一个connection创建的,即要在一个链接下做事情。如果想在两个链接下做事情,jta技术。