按照史蒂芬斯坦書
當一個異常在PL/SQL塊時,Oracle數據庫不回滾 任何在該塊DML語句所做的更改。你是應用程序邏輯事務的管理者,所以你決定應該發生什麼樣的行爲。
我試試看:
DML和異常處理 - 甲骨文
CREATE TABLE DML_Exception (exception_name VARCHAR2(20));
INSERT INTO DML_exception VALUES('CASE_NOT_FOUND');
INSERT INTO DML_exception VALUES('TOO_MANY_ROWS');
我都行我的表
Select * from DML_Exception
現在我從表中刪除行和提高在PL/SQL塊中的例外。
BEGIN
DELETE FROM dml_exception;
raise value_error;
END;
但我的表仍然包含兩個行。我錯過了什麼?
未提交的事務? – Stawros
你在用什麼客戶?也許它在異常之後回滾? –
作爲@Stawros sadid,你忘了COMMIT – pablomatico