多选题 以下是EMPLOYEE表结构的详细内容,其中也包括了所使用的约束类型。
EMPLOYEE
Column Name
EMPLOYEE_ID
NAME
JOB
MANAGER
DATE_HIRED
SALARY
BONUS
DEPIARTMENT_ID
Key-Type
PK
 
 
 
 
 
 
 
Nulls/Unique
NN,U
 
 
 
NN
 
 
NN
FK Table
 
 
 
 
 
 
 
 
FK Column
 
 
 
 
 
 
 
 
Datatype
HUM
VARCHAR2
VARCHAR2
NUM
DATE
NUM
HUM
NUM
Length
6
20
9
6
 
7, 2
7, 2
2
创建了EMPLOYEE_V视图,该视图从EMPLOYEE表中选取属于第10号部门(department_10)并且在1997年12月31日之前雇用的所有员工的全部信息(所有的行和列),为了达到这一目的,在创建视图的语句中使用了CHECK OPTION命令。请问,以下的哪个语句将成功地执行?
A.INSERT INTO employee_v (employee_id, name, job, manageger, date_hired, department_id)
VALUES (2009, 'LITTLE', 'TYPIST', 788, '30-MAY-1996', 10);
B.INSERT INTO employee_v (employee_id, name, job, manager, date_hired, salary, department_id)
VALUES (2009,'LITTLE', 'TYPIST', 788, '30-MAY-1996', 2000, 40);
C.INSERT INTO employee_v (employee_id, name, job, date_hired, salary, bonus, department_id)
VALUES (2009, 'LITTLE', 'TYPIST', '30-MAY-1998', 2000, 300, 10);
D.INSERT INTO employee_v (name, job, manager, date_hired, salary, bonus, department_id)
VALUES ('LITTLE', 'TYPIST', 788, '30-MAY-1996', 2000, 300, 10);
E.INSERT INTO employee_v (employee_id, name, job, manager, date_hired, salary, bonus)
VALUES (2009, 'LITTLE', 'TYPIST', 788, '30-MAY-1996', 2000, 300);

【正确答案】 A
【答案解析】[解析] 这一题是测试对使用视图的WITH CHECK OPTION子句的理解程度和对INSERT INTO语句以及约束的理解。这样的题在OCP考试中属于复杂的题。
根据有关使用视图的WITH CHECK OPTION子句的解释,可知如果在创建视图时使用了WITH CHECK OPTION CONSTRAINT子句,所有通过该视图进行的DML操作都不能违反在创建视图时用WHERE子句所限定的条件。因为在本题的创建视图的语句中使用了WITH CHECK OPTION CONSTRAINT子句并且其限制条件是属于第10号部门并且雇用日期在1997年12月31日之前的,所以任何违反这一限制条件的记录都不可能通过视图EMPLOYEE_V插入到EMPLOYEE表中。选项B是错误的,因为department_id=40;选项C是错误的,因为date_hired='30-MAY-1998' (1998年5月30日);选项E是错误的,因为department_id=300。
现在只剩下了选项A和D可能是正确的。我们仔细阅读一下EMPLOYEE表中的第一列employee_id的定义,该列是EMPLOYEE表的主键,所以任何DML操作都必须保证这一列的值不能为空,所以选项D是错误的,因为在这个插入语句中省略了employee_id这一列,这会造成将空值输入到employee_id列的情况发生。通过以上推断,可得出只有选项A是正确的。