一、原题
二、题目翻译
三、题目解析
四、测试
SQL> create table t(id int);
Table created.
SQL> insert into t values(1);
1 row created.
SQL> grant select on t to hr;
Grant succeeded.
SQL> select * from t;
ID
----------
1
SQL> rollback;
Rollback complete.
SQL> select * from t;
ID
----------
1
实验证明:grant已经把事务自动提交了,所以,事务中是不能包含DCL语句的。
Which statement is true regarding transactions? (Choose all that apply.)
A. A transaction can consist only of a set of DML and DDL statements.
B. A part or an entire transaction can be undone by using ROLLBACK command.
C. A transaction consists of a set of DML or DCL statements.
D. A part or an entire transaction can be made permanent with a COMMIT.
E. A transaction can consist of only a set of queries or DML or DDL statements.
答案:B C
(C选项,题库答案中有,但是我在做测试的时候,不正确,如果有朋友有其它意见可以讨论)
A. A transaction can consist only of a set of DML and DDL statements.
B. A part or an entire transaction can be undone by using ROLLBACK command.
C. A transaction consists of a set of DML or DCL statements.
D. A part or an entire transaction can be made permanent with a COMMIT.
E. A transaction can consist of only a set of queries or DML or DDL statements.
答案:B C
(C选项,题库答案中有,但是我在做测试的时候,不正确,如果有朋友有其它意见可以讨论)
二、题目翻译
下面关于事务的描述中,哪句是正确的?(选择所有正确的项)
A.一个事务只能由一组DML和DDL语句组成。
B.部分或整个事务可以使用ROLLBACK命令回滚。
C.一个事务由一组DML或DCL语句组成。
D.部分或整个事务可以使用COMMIT命令永久提交。
E.一个事务只能由一组查询或DML或DDL语句组成。
A.一个事务只能由一组DML和DDL语句组成。
B.部分或整个事务可以使用ROLLBACK命令回滚。
C.一个事务由一组DML或DCL语句组成。
D.部分或整个事务可以使用COMMIT命令永久提交。
E.一个事务只能由一组查询或DML或DDL语句组成。
三、题目解析
A选项不正确,DDL语句就自动提交事务了,所以一组事务中不能包含DDL语句。
B选项正确,rollback可以回滚部分或整个事务。
C选项,在答案中,是选的正确,但是做过测试,是不正确的,DCL语句和DDL语句一样,会自动提交数据。
D选项不正确,commit会提交整个事务。
E选项不正确,DDL语句会自动提交事务,所以一个事务中不能包含DDL语句。
B选项正确,rollback可以回滚部分或整个事务。
C选项,在答案中,是选的正确,但是做过测试,是不正确的,DCL语句和DDL语句一样,会自动提交数据。
D选项不正确,commit会提交整个事务。
E选项不正确,DDL语句会自动提交事务,所以一个事务中不能包含DDL语句。
四、测试
在11g的联机文档中,DCL语句定义如下:
Data Control Language
You can issue native data control language (DCL) statements from an Oracle environment, allowing central administration of user privileges and access levels for heterogeneous data stores.
根据描述可以知道,grant,revoke这些控制权限的语句,属于DCL语句,下面就使用grant语句来做实验。
Data Control Language
You can issue native data control language (DCL) statements from an Oracle environment, allowing central administration of user privileges and access levels for heterogeneous data stores.
根据描述可以知道,grant,revoke这些控制权限的语句,属于DCL语句,下面就使用grant语句来做实验。
SQL> create table t(id int);
Table created.
SQL> insert into t values(1);
1 row created.
SQL> grant select on t to hr;
Grant succeeded.
SQL> select * from t;
ID
----------
1
SQL> rollback;
Rollback complete.
SQL> select * from t;
ID
----------
1
实验证明:grant已经把事务自动提交了,所以,事务中是不能包含DCL语句的。