很多时候我们执行的SQL语句或者其他对数据库的操作都会因为各种问题报错,有时候报错的时候,已经有数据写入到数据库了,这个时候我们就需要将写入的数据给删除掉;而有时候执行删除操作后,其他的操作导致后面执行错误,我们又想还原已经删除的数据。
我们希望在报错的时候能够还原到某个点,是否可以这么操作呢?在数据库中,有数据回滚的概念,可以参考下面代码:
'事务回滚
Sub AdoRollback()
Dim cn As Object
Dim rs As Object
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source =C:\Users\admin\Desktop\dbtest.accdb"
'SQLSERVER 插入新数据
Sql = "select * from xx where 0"
rs.Open Sql, cn, 1, 3
cn.BeginTrans
With rs
For i = 1 To 100
.addnew
.Fields("f1") = i
.Fields("f2") = 1
.Update
Next i
End With
'committrans是确定执行事务,rollbacktrans是不执行事务
'cn.CommitTrans
cn.RollbackTrans
End Sub