现在的位置: 首页 > 综合 > 正文

[每日一题] OCP1z0-047 :2013-08-18 禁用启用约束――主键与外键 …………………………….61

2013年01月19日 ⁄ 综合 ⁄ 共 2294字 ⁄ 字号 评论关闭

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

正确答案:C

 

根据题意,测试结果如下:

1、创建表emp,并且设emp_no字段为主键,设mgr_no字段为外键。

gyj@MYDB> 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、禁用约束主键,同时也禁用了外键

gyj@MYDB>  alter table emp disable constraint emp_emp_no_pk cascade;   

Table altered.

3、查约束主键与外键是否都被禁用了,确实都被DISABLED了

gyj@MYDB> col owner for a10
gyj@MYDB> 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、启用约束主键

gyj@MYDB> alter table emp enable constraint emp_emp_no_pk;    

Table altered.

5、 查约束主键与外键是否都被禁用了,只有主键被禁用了。

gyj@MYDB> 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、  启用约束外键

gyj@MYDB> alter table emp enable constraint emp_mgr_fk;    

Table altered.

7、此时约束外键也被禁用了

gyj@MYDB> 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约束。如下操作:
gyj@MYDB> alter table emp disable constraint emp_emp_no_pk cascade; 

Table altered.

 有没有什么语?在启用主键约束时侯,同时也启动外键。如下操作报错:

gyj@MYDB>  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:oracledba_cn@hotmail.com

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

抱歉!评论已关闭.