• Mysql添加外键约束


    简单说一下使用外键的好处

    1、完整性约束

    比如:
    用户表中有字段 用户编号(id) , 名称(username)
    设备表中有字段 设备编号(id) , 设备名称(devicename) 设备属于的用户编号(user_id)

    把设备表中的用户编号设置成外键,引用用户表的主键。
    当向设备表中输入数据时,如果输入用户编号在用户表中找不到对应的话,就会报错,从而能保证这个设备必定会属于一个存在的用户。

    2、可以实现级联删除

    还引用上面的例子,当一个用户不在使用该系统时,需要将用户和他的设备从数据库删除,如果不使用外键,需要分别从用户表和设备表中删除数据,如果使用外键,只需要删除用户,引用用户表的主键做为外键的数据表中的相应数据也会自动删除,只需要操作一次数据表。

    还有就是在phpMyadmin中暂时还没有直接设置外键的功能,可以通过命令行的方式来修改,格式如下
    alter table 表名
    add foreign key 字段 references 表名(字段)

    使用Navicat 工具可以很方便的设置外键:
    鼠标右键打开设计表的界面。

    上面的选项卡选择外键就能添加

    不过我在添加外键的时候,遇到了问题

    我先创建了两个表tb_user 和 tb_device,存储引擎都是InnoDB,且都有user_id这个属性(类型完全一样),添加外键的时候 出现了错误

    ERROR : Cannot add or update a child row: a foreign key constraint fails

    最后才发现,原来是我的tb_device表中已经存在了数据,因此如果添加外键,就会导致错误。
    解决的办法
    删除数据,再添加外键





  • 相关阅读:
    Java 对象的封装,继承,抽象,接口写法
    python 3.7 方向键乱码
    yocto doc
    为什么要使用yocto
    ltp-ddt的makefile结构
    Git 常用命令列表
    Makefile依赖关系中的竖线“|”
    makefile 双冒号规则
    ltp makefile 解析
    makefile 变量展开
  • 原文地址:https://www.cnblogs.com/star91/p/4805058.html
Copyright © 2020-2023  润新知