着急的问题,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


...全文
88 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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
  • 打赏
  • 举报
回复
可以的,将这些操作都写到一个事务中来处理,如果处理失败则回滚事务至操作前的状态

1,217

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧