使用savepoint sp_begintran就可以了
創新互聯建站是一家專注于網站建設、成都網站制作與策劃設計,崇陽網站建設哪家好?創新互聯建站做網站,專注于網站建設10余年,網設計領域的專業建站公司;建站業務涵蓋:崇陽等地區。崇陽做網站價格咨詢:18980820575
如:
系列SQL或者DML語句;
savepoint sp_begintran; ---------設置回滾點
系列DML語句;
commit work;
這兒commit work;總是提交與其最近的回滾點
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是數據庫的表名
這樣查詢到的數據就是執行更新操作之前的數據
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是數據庫的表名
這樣查詢到的數據就是執行更新操作之前的數據
SQL和PL/SQL中Savepoint一事務范圍內中間標志經常用于將一個長事務劃分為小部分保留點Savepoint可標志長事務中任何點允許可回滾該點之后操作解決源代碼中經常解決Savepoint;例如一過程包含幾個函數每個函數前可建立一個保留點如果函數失敗很容易返回到每一個函數開始情況回滾到一個Savepoint之后該Savepoint之后所獲得數據封鎖被釋放為了處理方案部分回滾可以用帶TO Savepoint子句ROLLBACK語句將事務回滾到指定位置
例
BEGIN
INSERT INTO ATM_LOG(whowhenwhatwhere)
VALUES ('Kiesha'SYSDATE'Withdrawal of $100''ATM54')
SAVEPOINT ATM_LOGGED;
UPDATE checking
SET balance=balance-100
RETURN balance INTO new_balance;
IF new_balance0
THEN
ROLLBACK TO ATM_LOGGED;
COMMIT
RAISE insufficient_funda;
END IF
END
關鍵字SAVEPOINT可選所以下面兩個語句等價:
ROLLBACK TO ATM_LOGGED;
ROLLBACK TO SAVEPOINT ATM_LOGGED;
當前文章:oracle回滾怎么設置,oracle數據庫回滾命令
文章鏈接:http://vcdvsql.cn/article46/hedohg.html
成都網站建設公司_創新互聯,為您提供App開發、服務器托管、網站制作、搜索引擎優化、軟件開發、網站改版
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯