OCP-047insert into subquery with check option values()

24. View the Exhibit and examine the structure of the ORDERS table:
The ORDER_ID column has the PRIMARY KEY constraint and CUSTOMER_ID has the
NOT NULL constraint.
Evaluate the following statement:
INSERT INTO (SELECT order_id,order_date,customer_id
FROM ORDERS
WHERE order_total = 1000 WITH CHECK OPTION)
VALUES (13, SYSDATE, 101).
What would be the outcome of the above INSERT statement?
A. It would execute successfully and the new row would be inserted into a
new temporary table created by the subquery.
B. It would execute successfully and the ORDER_TOTAL column would have the
value 1000 inserted automatically in the new row.
C. It would not execute successfully because the ORDER_TOTAL column is not
specified in the SELECT list and no value is provided for it.
D. It would not execute successfully because all the columns from the ORDERS
table should have been included in the SELECT list and values should have
been provided for all the columns.
Answer: C


insert into (<subquery > WITH CHECK OPTION) values (...)
1: insert into subquery 里的这张表,如果插入的对应列值不满足subquery 里的where 条件的话,就不允许插入。
2: 如果插入的列有不在子查询里作为检查的where 条件的话,不允许插入
3:如果不加WITH CHECK OPTION 则在插入时不会检查。

OCP-047insert into subquery with check option values()_第1张图片

官方文档中给出的例子:

Using the WITH CHECK OPTION Clause: Example The following statement is legal even though the third value inserted violates the condition of the subquery where_clause:

INSERT INTO (SELECT department_id, department_name, location_id
   FROM departments WHERE location_id < 2000)
   VALUES (9999, 'Entertainment', 2500);

However, the following statement is illegal because it contains the WITH CHECK OPTION clause:

INSERT INTO (SELECT department_id, department_name, location_id
   FROM departments WHERE location_id < 2000 WITH CHECK OPTION)
   VALUES (9999, 'Entertainment', 2500);
     *
ERROR at line 2:
ORA-01402: view WITH CHECK OPTION where-clause violation

你可能感兴趣的:(OCP-047insert into subquery with check option values())