博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
更改具有Foreign key约束的表
阅读量:7113 次
发布时间:2019-06-28

本文共 1142 字,大约阅读时间需要 3 分钟。

1、Foreign key 说明:

     foreign key(外键) 建立起了表与表之间的约束关系,让表与表之间的数据更具有完整性和关联性。设想,有两张表A、B,A表中保存了许多电脑制造商的信息,比如联想、戴尔、惠普和华硕,B表中保存了许多多型号的电脑,比如lenovo1,lenovo2,hp1,hp2,hp3,dell1,dell2,asus1,现在如何将两张具有从属关系(每个电脑品牌下都有很多型号的电脑)的表关联起来呢?

    我们可以在B表中设置外键。首先我们给这个外键关联关系起个名字xx,外键作为一个字段我们也要给他起个名字xx,一般起A_id,外键的值就是A表中某一个字段的值,一般是id的值。这样做有什么意义呢?

    很简单,我们在B表中通过外键字段就可以看出哪些型号的电脑和哪些电脑厂商是相对应的。事实上,计算机程序也是这样把两张表关联起来的。这样两张表便具有了从属关系。这样也带来了一个问题,如果把A表中的某个电脑厂商(比如联想)删除了,B表中的lenovo1,lenovo2便没有了对应的厂商,就处于了游离状态,这是不被允许的,也就是不允许直接把A中的某一行删了。那如果需要删除A表中的某一个电脑厂商的信息怎么办呢?

    这里有两种方法:

  1. 禁止外键检测(SET FOREIGN_KEY_CHECKS=0)--> 删除A表中的信息--> 恢复外键检测(SET FOREIGN_KEY_CHECKS=1);
  2. 删除外键(alter table xx drop foreign key xx)--> 删除A表中的信息 --> 新建外键(alter table xx add foreign key(xx) references xx on delete cascade on update cascade );   

2、更改有外键约束的表--实例演示

  1. 新建数据库
  2. 新建两张数据表A,B
  3. 向数据表A,B中各写入一条数据
  4. 删除A表中的数据
    错误提示:表manufacturers中的数据具有外键约束,不能删除或者更新
  5. 解决方法一:禁止外键检测,然后删除数据,再恢复外键检测
  6. 解决方法二:删除外键约束,然后删除数据,再恢复外键约束

 

 

---------------------------------------------------------------------------------------------

参考资料:

1、mysql foreign key(外键) 说明与实例:

2、

3、主键与外键的关系、级联保存、更新、删除:

4、Mysql删除数据报外键约束解决方法:

 

转载于:https://www.cnblogs.com/Nonono-nw/p/3971721.html

你可能感兴趣的文章
Web应用扫描工具Wapiti
查看>>
hadoop-17-hive数据库元数据查看
查看>>
Bind-DLZ with MySQL
查看>>
Google 地图切片URL地址解析
查看>>
angualrjs 配置超时时间
查看>>
为了让你的网页能在更多的服务器上正常地显示,还是加上“SET NAMES UTF8”吧...
查看>>
Nvme固体硬盘Intel750,SM961分别使用一段时间以后对比
查看>>
基于JMH的Benchmark解决方案
查看>>
html5利用websocket完成的推送功能(tomcat)
查看>>
IEWebcontrol webctrl_client目录配置
查看>>
该学习了——近期要看(买)的7本书
查看>>
SQL SERVER 2014 Agent服务异常停止案例
查看>>
[ lucene扩展 ] An Introduction to Apache Lucene for Full-Text Search
查看>>
设置VS2008和IE8 调试ATL MFC ActiveX控件
查看>>
Hessian、 Burlap
查看>>
点击超链接从VSTF、SVN及文件共享服务器上下载文件
查看>>
linux文件打包tar.gz的命令
查看>>
【转】如何在IOS中使用3D UI - CALayer的透视投影
查看>>
在Windows 10上安装Oracle 11g数据库出现的问题及解决
查看>>
数据库“长连接”与“短连接”
查看>>