zoukankan      html  css  js  c++  java
  • 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表中已经存在了数据,因此如果添加外键,就会导致错误。
    解决的办法
    删除数据,再添加外键





  • 相关阅读:
    SQL数据去重复 Distinct 和 row_number() over()
    Excel闪退问题解决
    SQL Server 修改服务器登录名称以及密码
    从底层角度看ASP.NET-A low-level Look at the ASP.NET Architecture
    MD5加密
    MD5实例化异常 未能执行FIPS验证加密算法
    JDBC(上)
    自学MySQL第二天
    自学MySQL第一天
    自学JavaWeb第五天jQuery进阶
  • 原文地址:https://www.cnblogs.com/star91/p/4805058.html
Copyright © 2011-2022 走看看