默认情况下不提交DML。
在第一和第三步中输入的数据仍然存在,而无需我进行任何明确的提交
在第2步中执行CREATE TABLE语句时,提交了在第1步中插入的记录。您知道Oracle中的DDL命令在执行DDL之前和之后都会发出提交,因此当您执行打开事务时,您不会感到惊讶创建一个表。
来自步骤3的数据提交不同。我再说一遍,DML不是在Oracle中自动提交的。但是,通常可以将我们用于连接数据库的客户端软件配置为在每个语句之后发出提交。
例如,AutocommitTOIDE和PL / SQL Developer等IDE中的一个选项。如果使用这样的工具检查Tools> Preferences的相关设置(准确的路径可以为特定产品而异)。JDBC连接默认自动提交。与Microsoft ODBC相同。SQL * Plus默认情况下具有AUTOCOMMIT = OFF,但是可以将其设置为ON。
而且,SQL * Plus会在退出时提交行,无论是通过连接到新会话还是键入exit(而不是通过不受控制的退出,例如通过Task Manager杀死客户端进程)。由于Oracle 11gR2,这种行为可以通过EXITCOMMIT系统变量进行配置。默认为开。
这是一个db <> fiddle演示,它演示了DDL语句提交之前的DML,但是-在关闭AUTOCOMMIT的客户端中-可以回滚该语句之后的DML。
| 归档时间: |
|
| 查看次数: |
106 次 |
| 最近记录: |