大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
没有在 commit 提交 ,可以直接写ROLLBACK 闪回 回来就行 不需要闪回时间点
我们提供的服务有:成都网站制作、做网站、外贸营销网站建设、微信公众号开发、网站优化、网站认证、独山ssl等。为近1000家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的独山网站制作公司
//举例子,比如你在写一个级联删除的方法的时候,为了保证数据完整性,删除的时候一定要确定该删的都删了才行,否则就要回滚,下面是删除方法的例子:public boolean delete(int sID) {//成功删除会返回true;
dbc = new DataBaseConnection();//根据你自己的方式创建数据库的连接
Connection con = dbc.getConnection();//得到Connection
try {
con.setAutoCommit(false);// 更改JDBC事务的默认提交方式,默认是true,是自动提交;
dbc.executeUpdate("delete from xiao where ID=" + sID);//删除
dbc.executeUpdate("delete from xiao_content where ID=" + sID);//删除
dbc.executeUpdate("delete from xiao_affix where bylawid=" + sID);//删除
con.commit();//提交JDBC事务,如果没问题,这时才真正的删除了;
con.setAutoCommit(true);// 恢复JDBC事务的默认提交方式,这是个好习惯;
dbc.close();//关闭连接
return true;//删除成功
}
catch (Exception exc) {
con.rollBack();//回滚JDBC事务,出现异常,为保证数据完整性,此次操作回滚,不删除;
exc.printStackTrace();//输出异常信息;
dbc.close();//关闭连接
return false;//删除失败
}
}//顺便说一下,java中JDBC的事务管理,跟你用的是什么数据库没关系,用什么数据库都是这样;
execute执行后
可以回滚
commit提交后
不可以回滚
其实Oracle提交数据是分两步操作的,第一步execute执行,第二步commit提交。对应的PL\SQL也是要先点execute执行,执行后再点commit提交。
但是
commit提交后
可以用闪回查询恢复原来的数据
因为oracle会将近期的数据保存到快照中
如:
SELECT
*
FROM
TABLE_1
AS
OF
TIMESTAMP
TO_TIMESTAMP('20080606
20:00:00','YYYYMMDD
HH24:MI:SS');
这里'20080606
20:00:00'就是你想恢复数据到哪个时间状态
TABLE_1是数据库的表名
这样查询到的数据就是执行更新操作之前的数据
备份一张表一般用create 备份表 as select * from 原表;
如果不想要这个备份,直接运行
drop table 备份表;
就可以,没有回退的说法。