转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/10054697

正确答案:C
根据题意,测试结果如下:
1、创建表emp,并且设emp_no字段为主键,设mgr_no字段为外键。
[email protected]> 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.
2、禁用约束主键,同时也禁用了外键
[email protected]> alter table emp disable constraint emp_emp_no_pk cascade;
Table altered.
3、查约束主键与外键是否都被禁用了,确实都被DISABLED了
[email protected]> col owner for a10
[email protected]> select OWNER,CONSTRAINT_NAME, TABLE_NAME,STATUS from user_constraints where table_name='EMP';
OWNER CONSTRAINT_NAME TABLE_NAME STATUS
---------- ------------------------------ ------------------------------ --------
GYJ EMP_EMP_NO_PK EMP DISABLED
GYJ EMP_MGR_FK EMP DISABLED
4、启用约束主键
[email protected]> alter table emp enable constraint emp_emp_no_pk;
Table altered.
5、 查约束主键与外键是否都被禁用了,只有主键被禁用了。
[email protected]> select OWNER,CONSTRAINT_NAME, TABLE_NAME,STATUS from user_constraints where table_name='EMP';
OWNER CONSTRAINT_NAME TABLE_NAME STATUS
---------- ------------------------------ ------------------------------ --------
GYJ EMP_EMP_NO_PK EMP ENABLED
GYJ EMP_MGR_FK EMP DISABLED
6、 启用约束外键
[email protected]> alter table emp enable constraint emp_mgr_fk;
Table altered.
7、此时约束外键也被禁用了
[email protected]> select OWNER,CONSTRAINT_NAME, TABLE_NAME,STATUS from user_constraints where table_name='EMP';
OWNER CONSTRAINT_NAME TABLE_NAME STATUS
---------- ------------------------------ ------------------------------ --------
GYJ EMP_EMP_NO_PK EMP ENABLED
GYJ EMP_MGR_FK EMP ENABLED
8、禁用或启动约束主键与外键的官方文档语法图。
9、分析
禁用主健约束,句中指定CASCADE关键字,这样将在禁用主键约束的同时会禁用那些引用它们的FOREIGN KEY约束。如下操作:
[email protected]> alter table emp disable constraint emp_emp_no_pk cascade;
Table altered.
有没有什么语?在启用主键约束时侯,同时也启动外键。如下操作报错:
[email protected]> alter table emp enable constraint emp_emp_no_pk cascade;
alter table emp enable constraint emp_emp_no_pk cascade
*
ERROR at line 1:
ORA-00933: SQL command not properly ended
*特别注意的是在ENABLE主键后不会自动恢复外键(没有cascade选项),因此需要手工对引用该键的约束进行ENABLE。
如下操作:
ALTER TABLE '子表' ENABLE CONSTRAINT '约束主键名';
ALTER TABLE '子表' ENABLE CONSTRAINT '约束外键名';
QQ:252803295
学习交流QQ群:
DSI&Core Search Ⅰ 群:127149411(技术:已满)
DSI&Core Search Ⅱ 群:177089463(技术:未满)
DSI&Core Search Ⅲ 群:284596437(技术:未满)
DSI&Core Search Ⅳ 群:192136702(技术:未满)
DSI&Core Search Ⅴ 群:285030382(闲聊:未满)
MAIL:[email protected]
BLOG: http://blog.csdn.net/guoyjoe
WEIBO:http://weibo.com/guoyJoe0218
ITPUB: http://www.itpub.net/space-uid-28460966.html
OCM: http://education.oracle.com/education/otn/YGuo.HTM