zoukankan      html  css  js  c++  java
  • MySQL添加外键的方法

    为book表添加外键:

    《1》明确指定外键的名称:

    语法:alter table 表名 add constraint 外键的名称 foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名);

    alter table book add constraint FK_BOOK foreign key(pubid) references pub_com(id) on delete restrict on update restrict;

    《2》不指定外键的名称,mysql会自动为你创建一个外键名称:alter table book add foreign key(pubid) references pub_com(id) on delete restrict on update restrict;

    使用:show create table book;命令可查看


    自动键更新和删除:

    外键可以保证新插入的记录的完整性,但是,如果在REFERENCES从句中已命名的表删除记录会怎么样?在使用同样的值作为外键的辅助表中会发生什么?
      
     很明显,那些记录也应该被删除,否则在数据库中就会有很多无意义的孤立记录,MYSQL可以通过向FOREIGN KEY...REFERENCES修饰符添加一个ON DELETE 或ON UPDATE子句简化任务,它告诉了数据库在这种情况如何处理孤立任务
     
     关键字     含义
     CASCADE    删除包含与已删除键值有参照关系的所有记录
     SET NULL   修改包含与已删除键值有参照关系的所有记录,使用NULL值替换(只能用于已标记为NOT NULL的字段)
     RESTRICT   拒绝删除要求,直到使用删除键值的辅助表被手工删除,并且没有参照时(这是默认设置,也是最安全的设置)
     NO ACTION  啥也不做
     
     请注意,通过ON UPDATE 和 ON DELETE规则,设置MYSQL能够实现自动操作时,如果键的关系没有设置好,可能会导致严重的数据破坏,
     例如:如果一系列的表通过外键关系和ON DELETE CASCADE 规则连接时,任意一个主表的变化都会导致甚至只和原始删除有一些将要联系的记录在没有警告的情况被删除,所以,我们在操作之前还要检查这些规则的,操作之后还要再次检查.
     
  • 相关阅读:
    mac Path had bad ownership/permissions
    iOS,Android,Jave后台AES加密解密
    iOS bug调试技巧学习----breakpoint&condition
    pod trunk push --verbose 失败的原因总结
    CoreAnimation学习,学习总结,记录各种过程中遇到的坑
    封装TableView有可能用到的数据结构和UITableViewCell的一个继承类
    使用类似于中介者模式实现不同VC之间的跳转
    iOS工程师常用的命令行命令总结
    一个简单的图文混排的排版引擎
    如何添加自己封装的代码到Cocoapod
  • 原文地址:https://www.cnblogs.com/chengJAVA/p/3951923.html
Copyright © 2011-2022 走看看