SQL语句如何rollback

数据库中不小心Update了一张表,想恢复到Update之前的状态,请问我rollback语句应该怎么写。我Update的语句如下:UpdateBDsetIsActive... 数据库中不小心Update 了一张表,想恢复到Update之前的状态,请问我rollback语句应该怎么写。我Update的语句如下:Update BD set IsActive=‘0’,comments='Old 2000' ; 展开
 我来答
在太平湖钓鱼的金雀花
推荐于2018-02-26 · TA获得超过320个赞
知道小有建树答主
回答量:330
采纳率:100%
帮助的人:152万
展开全部
rollback是针对事务的,你如果没有在执行语句之前开启事务,那么无法rollback,建议你还是想别的办法吧,事务语句如下(sqlserver的给你借鉴):
--开启事务
begin tran
--执行操作
update Accounts_UsersExp set TelPhone=123456 where userid=14
--执行错误事务回滚
rollback
--如果正确进行事务提交
commit
可以勾选一句执行一句,但是commit了就不能rollback
千锋教育
2015-12-11 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部
回滚要放在事务里面进行,才能进行回滚;sql里面的事务使用关键字TransAction
1:可以用try catch捕获
begin try
begin tran
update table set a=1;
commit tran
end Try
begin catch
rollback tran
end catch

2:可以使用error 全局变量
begin tran
update tablename set ad=1111
if @@error<>0 begin rollback end
commit tran

注意:如果一个事务写了 begin trans ,后面一定要跟上 commit tran或 rollback transaction ,否则可能导致被锁
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
猴么戎11
2014-09-04 · TA获得超过270个赞
知道答主
回答量:120
采纳率:0%
帮助的人:156万
展开全部
你这个没有BEGIN ...END 时,第二个ROLLBACK TRANSACTION的存在会产生两个报错
Rolling back the transaction two times would cause an error.
ROLLBACK TRANSACTION 请求没有对应的 BEGIN TRANSACTION。
且第一个ROLLBACK TRANSACTION 与END之前的语句不会执行

你这个有BEGIN ...END 时,不会报错,且第一个ROLLBACK TRANSACTION 与END之前的语句不会执行

这应该是一段完整脚本的片段,你把完整脚本仔细看看吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-09-04
展开全部
如果你已经commit了那么就不能再通过事物回到update之前的状态了,不过如果你用的是oracle数据库,可以用它的数据库闪回机制实现。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
虞嘉妍
2014-09-04
知道答主
回答量:6
采纳率:0%
帮助的人:2.9万
展开全部
在Oracle中提交之后,就不能rollback了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式