如何在不使用Oracle的提交的情况下永久保存数据?

时间:2015-09-05 08:29:24

标签: oracle transactions

如何在不执行COMMIT的情况下保持DML语句的结果?例如,如何使此更新永久化?

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17-DEC-80        800                    20

SQL> update emp set comm=200 where empno=7369;


1 row updated.

SQL> select * from emp;
     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17-DEC-80        800       200          20

2 个答案:

答案 0 :(得分:1)

在SQLPlus中,您可以打开自动提交,然后您不需要手动提交每个事务:

path(path,'c:\my_folder\my_sub_folder')

您也可以使用任何DDL(数据定义语言)语句而不是COMMIT,因为所有DDL语句都会发出隐式提交。
例如,您可以使用COMMENT语句提交更改:

SET AUTOCOMMIT ON

答案 1 :(得分:1)

提交是我们如何保存对数据库的更改。如果不发出提交,则无法将数据保存到数据库。 commit(和rollback)的发布是定义交易的原因。

通过提供commit;模式,某些数据库客户端将允许我们保存更改,而无需显式执行autocommit语句。例如,这是JDBC (find out more)和ODBC(find out more)的默认行为。

使用SQL * Plus(以及大多数其他数据库IDE),默认情况下是手动控制事务。但是,我们可以通过将autocommit设置为ONIMMEDIATE或数值来终止控制权。 {8}会在每八个DML语句后发出SET AUTOCOMMIT 8Find out more

commit模式运行通常是一个坏主意。能够回滚更改是有用的,因为有时我们会犯错误。但是从业务角度来看,许多事务包含多个DML语句:在每个事务之后提交可能会引入数据损坏,尤其是因为它会损害Read Committed隔离级别。 Find out more

简而言之,开发人员应该学会正确使用交易。它是构建可靠数据库应用程序的关键。