根据这个题目 作如下实验:
SQL> create table t1 (id number primary key,name varchar2(20));
表已创建。
SQL> insert into t1 values(1,'sales');
已创建 1 行。
SQL> insert into t1 values(2,'teach');
已创建 1 行。
SQL> commit;
提交完成。
SQL> create table e (eid number primary key,ename varchar2(20),depno number references t1(id));
表已创建。
SQL> insert into e values (1,'KING',1);
已创建 1 行。
SQL> insert into e values (2,'HARI',2);
已创建 1 行。
SQL> insert into e values (1,'KING',3);
insert into e values (1,'KING',3)
*
第 1 行出现错误:
ORA-02291: 违反完整约束条件 (SCOTT.SYS_C009983) - 未找到父项关键字
SQL> COMMIT;
提交完成。
SQL> select * from t1;
ID NAME
---------- --------------------
1 sales
2 teach
SQL> select * from e;
EID ENAME DEPNO
---------- -------------------- ----------
1 KING 1
2 HARI 2
SQL> conn system/yang as sysdba
已连接。
SQL> show parameter bin
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
recyclebin string on
SQL> drop table scott.e;
表已删除。
SQL> select * from scott.e;
select * from scott.e
*
第 1 行出现错误:
ORA-00942: 表或视图不存在
SQL> flashback table scott.e to before drop;
闪回完成。
SQL> conn scott/yang
已连接。
SQL> insert into e values(2,'cott',1);
insert into e values(2,'cott',1)
*
第 1 行出现错误:
ORA-00001: 违反唯一约束条件 (SCOTT.BIN$LtV86d/tTneZXApzOMr+5w==$0)
SQL> select * from e;
EID ENAME DEPNO
---------- -------------------- ----------
1 KING 1
2 HARI 2
SQL> insert into e values(3,'cott',55);
已创建 1 行。
由此可以得出结论:闪回表对以前建立在该表上的唯一约束没有影响,也即闪回时也闪回该表的唯一约束。但是不闪回该表的完整约束条件。
上面的答案是 D.