oracle先删除再添加如何回滚? 先删除数据,但是添加的时候出错,调用回滚发现添加的都没加上,但是删除的却都删掉了.问:是否可以将删除掉的数据也回滚?像这种问题,如何解决? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 begin delete from your_table; insert into your_table values (...); commit; -- 提交exception when others then dbms_output.put_line(sqlerrm); -- 顯示錯誤信息 rollback; -- 回滾end; 新手,我不太懂oracle的事务是什么时候开始,什么样时候结束比如我分别删除5个表里的数据,再往5个表里加数据.事务是怎么开始的?删第一条数据的时候吗? 是的,從第一天DML語句開始一個新的事務 delete和insert之间不要执行ddl语句 事务结束1.commit或者rollback2.ddl或者dcl语句被执行(自动提交)3.用户退出4.系统中止 -- 測試數據的準備工作drop table test1;drop table test2;create table test1 (id1 number, name1 varchar2(20));create table test2 (id2 number, name2 varchar2(20));insert into test1 values (1, 'ab');insert into test2 values (2, 'cd');commit;-- 顯示操作前的數據select * from test1; ID1 NAME1 ---------- ------------------------------ 1 ab select * from test2; ID2 NAME2 ---------- ------------------------------ 2 cd begin -- 開始事務 delete from test1 where id1 = 1; delete from test2 where id2 = 2; insert into test1 values (3, 'abccc'); insert into test2 values ('ab','cd'); -- 製造錯誤 ORA-01722: invalid number commit; -- 提交事務exception when others then -- 捕獲異常 dbms_output.put_line(sqlerrm); rollback; -- 回滾事務end;-- 操作後的數據select * from test1; ID1 NAME1 ---------- ------------------------------ 1 ab select * from test2; ID2 NAME2 ---------- ------------------------------ 2 cd -- 可以看出,刪除掉的數據通過回滾事務而沒有真正刪除 我用php连接数据库,php操作oracle不是很好. 求推Oracle经典书籍!!!!!!! 关于oracle和mysql function函数转变问题 在线等 SQLplus 执行问题 一个很怪异的问题 一个简单SQL语句问题? 数据库连接讨论--永远的话题 菜鸟提问: %ROWTYPE 怎么用啊? 找不到 SNAP$_<mview_name>, MVIEW$_<mview_name>, 请问过程、触发器等存放在哪个空间?? 哪里有写Oracle存储过程的工具下载? 批量插入的异常处理 一个plsql中的插入数据问题
delete from your_table;
insert into your_table values (...);
commit; -- 提交
exception
when others then
dbms_output.put_line(sqlerrm); -- 顯示錯誤信息
rollback; -- 回滾
end;
比如我分别删除5个表里的数据,再往5个表里加数据.事务是怎么开始的?删第一条数据的时候吗?
1.commit或者rollback
2.ddl或者dcl语句被执行(自动提交)
3.用户退出
4.系统中止
-- 測試數據的準備工作
drop table test1;
drop table test2;
create table test1 (id1 number, name1 varchar2(20));
create table test2 (id2 number, name2 varchar2(20));
insert into test1 values (1, 'ab');
insert into test2 values (2, 'cd');
commit;-- 顯示操作前的數據
select * from test1;
ID1 NAME1
---------- ------------------------------
1 ab select * from test2;
ID2 NAME2
---------- ------------------------------
2 cd begin
-- 開始事務
delete from test1 where id1 = 1;
delete from test2 where id2 = 2;
insert into test1 values (3, 'abccc');
insert into test2 values ('ab','cd'); -- 製造錯誤 ORA-01722: invalid number
commit; -- 提交事務
exception
when others then -- 捕獲異常
dbms_output.put_line(sqlerrm);
rollback; -- 回滾事務
end;-- 操作後的數據
select * from test1;
ID1 NAME1
---------- ------------------------------
1 ab select * from test2;
ID2 NAME2
---------- ------------------------------
2 cd -- 可以看出,刪除掉的數據通過回滾事務而沒有真正刪除