• mysql的常见的外键约束


    一  mysql的常见的外键约束策略

    设计外键时,mysql提供了4种外键关联策略

    1、RESTRICT 限制(默认)

    如果有外键关联了tb_class 的id,则tb_class 不能删除被关联的记录、不能更新关联记录deptId字段的值(会报错)。

    2、CASCADE 级联

    删除tb_class 中的记录时,会自动删除tb_student中与之关联的记录;修改tb_class中tb_student字段的值时,会自动修改tb_student中与之关联的记录的外键字段的值(同步变化)。

    3、NO ACTION 不做处理

    删除、更新tb_class中的id字段的值时,tb_student中与之关联的记录不作任何处理。此种策略需要存储引擎支持,如果存储引擎不支持,会自动换为RESTRICT。

    4、SET NULL 置为NULL

    删除tb_student的记录,或者更新id字段的值,会自动将tb_student中与之关联的记录的外键字段的值置为NULL。

    二 案例

    1.新建一个tb_class 和一个tb_student表

    CREATE TABLE `tb_class` (
      `id` int(11) NOT NULL,
      `class_name` varchar(255) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    CREATE TABLE `tb_student` (
      `id` int(11) NOT NULL,
      `sname` varchar(255) DEFAULT NULL,
      `cid` int(11) DEFAULT NULL,
      PRIMARY KEY (`id`),
      KEY `cid` (`cid`),
      CONSTRAINT `tb_student_ibfk_1` FOREIGN KEY (`id`) REFERENCES `tb_class` (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    1.首先需要添加数据时候,修改数据,删除数据时候,都必须先把父表进行操作,直接操作子表,则报错:

    2.直接删除父表,有子表的引用,不让删除

     

     

  • 相关阅读:
    JavaScript 设计模式之组合模式
    Linux启动过程基本指南
    C++编程题目2
    在Visual Studio 2017上配置Glut
    EEPROM、FLASH电路设计
    golang单元测试:使用httptest和gock工具进行网络测试
    Mac根据端口查询进程id的命令
    用于原发性进行性失语症分类的可解释性机器学习影像组学模型
    SSRF
    第三章:form表单
  • 原文地址:https://blog.csdn.net/u011066470/article/details/126884250