事务是数据库非常重要的一个东西,像我这种非计算机专业的外行人,单从事务这个名字上看,可能根本不明白是什么意思,只有多次用过之后才能理解!
可以这样来理解:就像打开一个Excel文件,对这个文件的许多单元格都进行了输入操作、又增加了Sheet、又设置了各种格式等等。这个时候,稍微熟悉Excel的都应该知道,如果点击关闭文件,Excel会提示是否保存,点击不保存按钮,文件仍然是打开之前的;只有点击了保存按钮,做的那些操作才会真正的保存下来。
这里说到的对Excel进行的各种各样的操作,在数据库里就相当于是对数据库进行了很多步修改操作(像Update、Insert、Delete语句都是修改操作)。
事务就相当于是那个保存的按钮,这些对数据库的修改操作,可以使用事务这个东西来控制要么一次性全部执行操作,要么就回到操作之前的状态。
这么控制有什么用呢?直接百度一下数据库事务,看百度百科的解释就可以了,里面银行转账的例子还是非常好理解的。
具体在VBA里的使用就非常的简单了,直接调用ADO的方法就可以了:
Function Begin() As Long
AdoConn.BeginTrans
End Function
Function Commit() As Long
AdoConn.CommitTrans
End Function
Function Rollback() As Long
AdoConn.RollbackTrans
End Function测试:
前面很多是用Excel作为数据库来处理的例子,但是前面也说到过,仅仅是把Excel当作数据库来处理,Excel不是真正的数据库,很多数据库的特性是不支持的,其中事务就不能支持:

虽然执行了Rollback,但是insert的数据还是被保存了。
下面看下sqlite数据库:

可以看到,执行了Rollback,insert的数据没有保存到数据库。

执行了Commit,insert的数据才保存到数据库。