着急的问题,rollback的问题

freehorse_1981 2004-10-26 04:47:12
我后台用的是oracle数据库,我现在想进行如下操作:
先删除表中数据
再插入另外一些数据
如果插入不成功的话,则恢复到删除前。
请问可以用rollback 实现吗?如果可以的话,怎么用,麻烦详细一些告诉我!
我的语句:
mysql="delete from table1"
Rs.open mysql,con,adopendynammic,adlockoptimistic
mysql="insert into table1 values('2','ewr')//添加不成功则不进行上一步的delete操作
Rs1.open mysql,con,adopendynammic,adlockoptimistic


...全文
49 点赞 收藏 4
写回复
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
creazyfish 2004-10-26
当然可以了,我根据你的sql临时写了个,放到sub中就可以了

On Error GoTo ErrHandle
Dim mysql As String
Dim rs As New ADODB.Recordset
Dim rs1 As New ADODB.Recordset
Dim con As New ADODB.Connection
con = "连接字符串(自己填)"

con.BeginTrans
mysql = "delete from table1"
rs.open mysql, con, adopendynammic, adlockoptimistic
mysql = "insert into table1 values('2','ewr')"
rs1.open mysql, con, adopendynammic, adlockoptimistic
con.CommitTrans

Exit Sub
ErrHandle:
con.RollbackTrans
If Err.Number <> "" Then
Err.Raise Err.Number, Err.Source, Err.Description
End If
回复
cpio 2004-10-26
你这样写就不能回滚了

可以写成存储过程,在存储过程里面控制回滚
回复
hengheng1 2004-10-26
On Error GoTo err1
adocon.BeginTrans
mysql="delete from table1"
Rs.open mysql,con,adopendynammic,adlockoptimistic
mysql="insert into table1 values('2','ewr')
adocon.CommitTrans
Exit Sub
err1:
adocon.RollbackTrans
回复
饮水需思源 2004-10-26
可以的,将这些操作都写到一个事务中来处理,如果处理失败则回滚事务至操作前的状态
回复
发动态
发帖子

1180

社区成员

VB 数据库(包含打印,安装,报表)
申请成为版主
社区公告
暂无公告