答案是C
根据题意emp_no列是主键,mgr_no是外键,关联到emp表本身的主键emp_no列上。
disable主键约束,带上cascade选项的时候,主键和外键都会被禁用掉。
重新启用主键时,主键会变成enable,外键不受影响仍然disable.
感觉不需要怎么解释,直接用实验来验证吧。
test@testdb> create table emp
2 (emp_no number(2) constraint emp_emp_no_pk primary key,
3 ename varchar2(15),
4 salary number(8,2),
5 mgr_no number(2) constraint emp_mgr_fk references emp);
Table created.
test@testdb> alter table emp disable constraint emp_emp_no_pk cascade; --禁用主键带cascade选项,导致外键也会一起被禁掉.
Table altered.
test@testdb> select OWNER,CONSTRAINT_NAME, TABLE_NAME,STATUS from user_constraints;
OWNER CONSTRAINT_NAME TABLE_NAME STATUS
-------------------- ------------------------------ ------------------------------ --------
TEST EMP_EMP_NO_PK EMP DISABLED
TEST EMP_MGR_FK EMP DISABLED
21 rows selected.
test@testdb> alter table emp enable constraint emp_emp_no_pk; --启用主键约束,外键仍然disable。
Table altered.
test@testdb> select OWNER,CONSTRAINT_NAME, TABLE_NAME,STATUS from user_constraints;
OWNER CONSTRAINT_NAME TABLE_NAME STATUS
-------------------- ------------------------------ ------------------------------ --------
TEST EMP_EMP_NO_PK EMP ENABLED
TEST EMP_MGR_FK EMP DISABLED
21 rows selected.
test@testdb>
test@testdb> alter table emp enable constraint emp_mgr_fk; --启用外键约束
Table altered.
test@testdb> select OWNER,CONSTRAINT_NAME, TABLE_NAME,STATUS from user_constraints;
OWNER CONSTRAINT_NAME TABLE_NAME STATUS
-------------------- ------------------------------ ------------------------------ --------
TEST EMP_EMP_NO_PK EMP ENABLED
TEST EMP_MGR_FK EMP ENABLED
21 rows selected.
test@testdb>