OREACLE学习.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
OREACLE学习

CREATE TABLE SCOTT.MID_A_TAB   (??? A VARCHAR2(20 BYTE),   B VARCHAR2(10 BYTE),   DETPNO VARCHAR2(10 BYTE)   )TABLESPACE USERS ;   CREATE TABLE SCOTT.MID_B_TAB   (??? A VARCHAR2(20 BYTE),   B VARCHAR2(10 BYTE),   DEPTNO VARCHAR2(10 BYTE)   )TABLESPACE USERS ;   --给MID_A_TAB表添加主键   alter table mid_a_tab add constraint a_pk primary key (detpno);   --给MID_B_TAB表添加主键   alter table mid_b_tab add constraint b_pk primary key(a);   --给子表MID_B_TAB添加外键,并且引用主表MID_A_TAB的DETPNO列,并通过on delete cascade指定引用行为是级联删除   alter table mid_b_tab add constraint b_fk foreign key (deptno) references mid_a_tab (detpno) on delete cascade;   --向这样就创建了好子表和主表   向主表添加数据记录   SQL insert into mid_a_tab(a,b,detpno)? values(1,1,10);   已创建 1 行。   已用时间:? 00: 00: 00.00   向子表添加数据   SQL insert into mid_b_tab(a,b,deptno) values(1,2,6);   insert into mid_b_tab values(1,2,6)   *   第 1 行出现错误:   ORA-00001: 违反唯一约束条件 (SCOTT.B_PK)   已用时间:? 00: 00: 00.00   可见上面的异常信息,那时因为子表插入的deptno的值是6,然而此时我们主表中   detpno列只有一条记录那就是10,所以当子表插入数据时,在父表中不能够找到该引用   列的记录,所以出现异常。   但我们可以这样对子表的数据的进行插入(即:在子表的deptno列插入null,因为我们在建表的时候   并没有对该列进行not null的约束限制):   SQL insert into mid_b_tab(a,b,deptno) values(3,2,null);   已创建 1 行。   已用时间:? 00: 00: 00.00   现在如果我们把子表mid_b_tab中deptno列加上not null约束。   SQL alter table mid_b_tab modify deptno not null;   alter table mid_b_tab modify deptno not null   *   第 1 行出现错误:   ORA-02296: 无法启用 (SCOTT.) - 找到空值   已用时间:? 00: 00: 00.01   上面又出现异常,这是因为现在mid_b_tab表中有了一条记录,就是我们先前添加的   那条记录。   3,2,null   现在我们要把该表的deptno列进行not null约束限制,所以oracle不让我们这样干。   那我们就只有把该表给delete或truncate掉,然后在修改deptno列为非空。   SQL delete from mid_b_tab;   已删除2行。   已用时间:? 00: 00: 00.01   再次修改子表mid_b_tab表的deptno列为非空。   SQL alter table mid_b_tab modify deptno not null;   表已更改。   已用时间:? 00: 00: 00.01   修改成功!   我们再次插入数据   insert into mid_b_tab(a,b,deptno) values(13,2,null);试试。   SQL insert into mid_b_tab(a,b,deptno) values(13,2,null);   insert into mid_b_tab(a,b,deptno) values(13,2,null)   *   第 1 行出现错误:   ORA-01400: 无法将 NULL 插入 (SCOTT.MID_B_TAB.DEPTNO)   已用时间

文档评论(0)

asd522513656 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档