zoukankan      html  css  js  c++  java
  • 外键

    今天学完了最后一个mysql字段约束外键,做一下总结:

    一、外键约束和要求

    1.父表和子表必须使用相同的存储引擎,而且禁止使用临时表;
    2.数据表的存储引擎只能为InnoDB
    3.外键列和参照列必须有相似的数据类型。其中数字的长度或是否有符号位必须相同;而且字符的长度则可以不同;
    4.外键列和参照列必须创建索引。如果外键列不存在索引的话,mysql将自动创建索引

     

    *物理外键和逻辑外键
    只有InnoDB才支持物理外键,平时的设计中是很少定义物理外键约束的,而是按照表与表之间的逻辑关系来定义逻辑外键,不设置物理外键

    二、外键约束的参照操作

    1.CASCADE:从父表中删除或者更新且自动删除或更新子表中匹配的行

      • 删除:删除主表时自动删除从表。删除从表,主表不变
      • 更新:更新主表时自动更新从表。更新从表,主表不变    

    2.SET NULL:从父表删除或更新行,并设置了子表中的外键列为NULL,如果使用该选项,必须保证子表列没有指定NOT NULL

      • 删除:删除主表时自动更新从表值为NULL。删除从表,主表不变
      • 更新:更新主表时自动更新从表值为NULL。更新从表,主表不变    

    3.RESTRICT:拒绝对父表的删除或更新操作

    4.NO ACTION:标准SQL的关键字,在mysql中与RESTRICT相同

    NULL、RESTRICT、NO ACTION
    删除:从表记录不存在时,主表才可以删除。删除从表,主表不变
    更新:从表记录不存在时,主表才可以更新。更新从表,主表不变
     
    三、创建外键命令
    明确指定外键的名称:alter table book add constraint FK_BOOK foreign key(pubid) references pub_com(id) on delete restrict(CASCADE,SET NULL) on update restrict(CASCADE,SET NULL) ;
  • 相关阅读:
    移动前端webApp开发点滴积累20140524
    做业务系统与公众产品的区别
    浅谈浏览器兼容性问题-(4)工具及调试
    浅谈浏览器兼容性问题-(3)他山之石整理
    浅谈浏览器兼容性问题-(2)本人解决方案理解与积累
    使用Using的注意事项
    [转]VMPlayer的Briged网络配置
    [转]移动互联网应用技术架构简介-Restful服务
    理解WCF中的Contracts
    [翻译]在ASP.NET Web API中通过OData支持查询和分页
  • 原文地址:https://www.cnblogs.com/zhongJaywang/p/6755043.html
Copyright © 2011-2022 走看看