oracle中DML,DCL语句自动提交

DML,DCL语句自动提交
1.在scott用户下建立一张表
create table test1 (id number,name varchar(20));
SQL> create table test1 (id number,name varchar(20));
表已创建。
2.插入两条记录到scott表中不提交(commit)
SQL> insert into test1 values (1,'jack');

已创建 1 行。
SQL> insert into test1 values (2,'ww');

已创建 1 行。
3.在打开另外一个会话以scott用户连进去查询test1表,因为没有提交表中没有数据
SQL> select * from test1;

未选定行

SQL>
4.再第一个会话中用alter table test1 modify name varchar(15);修改表的结构
SQL> alter table test1 modify name varchar(15);

表已更改。
此时在第二个打开的会话查看test1可以看到有两条记录说明alter table之后commit了
SQL> select * from test1;
        ID NAME
---------- ------------------------------
         1 jack
         2 ww
SQL>

5.再第一个会话中insert 一条记录
SQL> insert into test1 values (3,'csdn');

已创建 1 行。

SQL>
此时在第二个会话中查询test1 显示的记录还是两条
SQL> select * from test1;

        ID NAME
---------- ------------------------------
         1 jack
         2 ww

SQL>

6.在第一个会话中执行一条dcl操作
SQL> grant select on test1 to hr;

授权成功。

SQL>
在第二个会话中查看test1,表中有3条记录说明执行grant之后又进行commit了
SQL> select * from test1;

        ID NAME
---------- ------------------------------
         1 jack
         2 ww
         3 csdn
SQL>
7.总结一下执行DDL,DCL语句之后会自动commit,DDL语句包括create,alter,drop,rename,truncate,comment
DCL包括grant revoke等

8.拓展一下
再在第一个窗口insert一条记录
SQL> insert into test1 values (4,'test');
已创建 1 行。
SQL>
在第二个会话查看test1还是三条记录因为insert之后没有提交
SQL> select * from test1;

        ID NAME
---------- ------------------------------
         1 jack
         2 ww
         3 csdn
SQL>

此时用exit退出sqlplus,然后再在第二个会话查看test1哎发现有四条记录了也就是正常退出(exit)事务会commit
SQL> select * from test1;

        ID NAME
---------- ------------------------------
         1 jack
         2 ww
         3 csdn
         4 test
SQL>

异常退出会话事务会回滚掉(关掉会话,系统崩溃)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值