Oracle 添加外键


1、默认的创建方式
在删除被参照的数据时,将无法删除。

Sql代码
  1. CREATETABLET_INVOICE
  2. (IDNUMBER(10)NOTNULL,
  3. INVOICE_NOVARCHAR2(30) NOTNULL,
  4. CONSTRAINTPK_INVOICE_ID PRIMARYKEY(ID));
  5. CREATETABLET_INVOICE_DETAIL
  6. (IDNUMBER(10)NOTNULL,
  7. AMOUNTNUMBER(10,3),
  8. PIECENUMBER(10),
  9. INVOICE_IDNUMBER(10),
  10. CONSTRAINTPK_DETAIL_IDPRIMARYKEY(ID));
  11. ALTERTABLET_INVOICE_DETAIL
  12. ADDCONSTRAINTFK_INVOICE_ID
  13. FOREIGNKEY(INVOICE_ID)REFERENCEST_INVOICE(ID);


2、级联删除
外键语法有个选项可以指定级联删除特征。这个特征仅作用于父表的删除语句。使用这个选项,父表的一个删除操作将会自动删除所有相关的子表记录

Sql代码
  1. ALTERTABLET_INVOICE_DETAIL
  2. ADDCONSTRAINTFK_INVOICE_ID
  3. FOREIGNKEY(INVOICE_ID)REFERENCEST_INVOICE(ID)
  4. ONDELETECASCADE;


如果不能级联删除,可设置子表外键字段值为null,使用on delete set null语句(外键字段不能设置not null约束).

Sql代码
  1. ALTERTABLET_INVOICE_DETAIL
  2. ADDCONSTRAINTFK_INVOICE_ID
  3. FOREIGNKEY(INVOICE_ID)REFERENCEST_INVOICE(ID)
  4. ONDELETESETNULL;


三、参照字段语法结构
创建外键约束是,外键字段参照父表的主键或Unique约束字段。这种情况下可以不指定外键参照字段名,如下:

Sql代码
  1. ALTERTABLET_INVOICE_DETAIL
  2. ADDCONSTRAINTFK_INVOICE_ID
  3. FOREIGNKEY(INVOICE_ID)REFERENCEST_INVOICE;


当没有指定参照字段时,默认参照字段是父表的主键。
如果外键字段参照的是Unique而非Primary Key字段,必须在add constraint语句中指定字段名。

优质内容筛选与推荐>>
1、Oracle常用的数据库字段
2、Android Activity和Intent机制
3、Dictionary序列化和反序列化
4、好书与好博文
5、hibernate.cfg.xml 中hibernate.hbm2ddl.auto配置节点(转)


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn