按照史蒂芬斯坦书
当一个异常在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