更改具有Foreign key约束的表
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表中的某一个电脑厂商的信息怎么办呢?
这里有两种方法:
- 禁止外键检测(SET FOREIGN_KEY_CHECKS=0)--> 删除A表中的信息--> 恢复外键检测(SET FOREIGN_KEY_CHECKS=1);
- 删除外键(alter table xx drop foreign key xx)--> 删除A表中的信息 --> 新建外键(alter table xx add foreign key(xx) references xx on delete cascade on update cascade );
2、更改有外键约束的表--实例演示
- 新建数据库

- 新建两张数据表A,B



- 向数据表A,B中各写入一条数据


- 删除A表中的数据

错误提示:表manufacturers中的数据具有外键约束,不能删除或者更新 - 解决方法一:禁止外键检测,然后删除数据,再恢复外键检测

- 解决方法二:删除外键约束,然后删除数据,再恢复外键约束




---------------------------------------------------------------------------------------------
参考资料:
1、mysql foreign key(外键) 说明与实例:http://blog.51yip.com/mysql/1136.html
2、http://www.cnblogs.com/kcher90/archive/2013/02/06/2908109.html
3、主键与外键的关系、级联保存、更新、删除:http://lzd20021683.iteye.com/blog/1293957
4、Mysql删除数据报外键约束解决方法:http://clovemfong.blog.51cto.com/3297559/1239296
更改具有Foreign key约束的表的更多相关文章
- SQL PRIMARY KEY 约束\SQL FOREIGN KEY 约束\SQL CHECK 约束
SQL PRIMARY KEY 约束 PRIMARY KEY 约束唯一标识数据库表中的每条记录. 主键必须包含唯一的值. 主键列不能包含 NULL 值. 每个表都应该有一个主键,并且每个表只能有一个主 ...
- SQL FOREIGN KEY 约束
SQL FOREIGN KEY 约束 一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY. 让我们通过一个例子来解释外键.请看下面两个表: "Persons&quo ...
- SQL-W3School-高级:SQL FOREIGN KEY 约束
ylbtech-SQL-W3School-高级:SQL FOREIGN KEY 约束 1.返回顶部 1. SQL FOREIGN KEY 约束 一个表中的 FOREIGN KEY 指向另一个表中的 P ...
- SQL Server 2008 R2——TRUNCATE TABLE 无法截断表 该表正由 FOREIGN KEY 约束引用
=================================版权声明================================= 版权声明:原创文章 禁止转载 请通过右侧公告中的“联系邮 ...
- sqlserver truncate清空表时候,无法删除 'B表',因为该表正由一个 FOREIGN KEY 约束引用。
外键: 查询:select object_name(a.parent_object_id) 'tables' from sys.foreign_keys a where a.referenced_ ...
- SQLServer之修改FOREIGN KEY约束
使用SSMS数据库管理工具修改FOREIGN KEY约束 1.连接数据库,选择数据表->右键点击->选择设计(或者展开键,选择要修改的外键,右键点击,选择修改,后面修改步骤相同). 2.在 ...
- 无法删除对象 '产品',因为该对象正由一个 FOREIGN KEY 约束引用。
在删除northwindcs表时,发生报错,消息 3726,级别 16,状态 1,第 2 行,无法删除对象 '产品',因为该对象正由一个 FOREIGN KEY 约束引用.此时判断是因为有其他表的外键 ...
- 删除提示 FOREIGN KEY 约束引用”
有时想删除某个表时,提示“无法删除对象 'Orders',因为该对象正由一个 FOREIGN KEY 约束引用”,原因很简单不要急躁,它被其它表的外键引用了,所以无法删除,在此只需先找到哪些表的外键引 ...
- SQLServer之FOREIGN KEY约束
FOREIGN KEY约束添加规则 1.外键约束并不仅仅可以与另一表的主键约束相链接,它还可以定义为引用另一个表中 UNIQUE 约束的列. 2.如果在 FOREIGN KEY 约束的列中输入非 NU ...
随机推荐
- <hr />改变颜色
其实,<hr />是有默认的border的,改变border颜色即可改变hr颜色. 例如: <hr style="position: relative;top: 2.3re ...
- Ubuntu 18.04换国内源 中科大源 阿里源 163源 清华源
感觉还是18.4好用,所以最近装回了18,感觉现在18的兼容性也还可以了,深度学习的环境配置都没有问题,就是安装软件的时候有点慢,所以想要更新一下源. 第一步: 编辑/etc/apt/sources. ...
- c#中富文本编辑器Simditor带图片上传的全部过程(项目不是mvc架构)
描述:最近c#项目中使用富文本编辑器Simditor,记录一下以便以后查看. 注:此项目不是MVC架构的. 1.引用文件 项目中引用相应的css和js文件,注意顺序不能打乱,否则富文本编辑器不会正常显 ...
- hadoop学习笔记之一步一步部署hadoop分布式集群
一.准备工作 同一个局域网中的三台linux虚拟机,我用的是redhat6.4,如果主机是windows操作系统,可以先安装vmware workstation, 然后在workstation中装上3 ...
- centos6安装python3.6.4
安装Python依赖包: [root@Python src]# yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlit ...
- 如何在linux系统下配置无线网卡?【转】
转自:http://www.jb51.net/LINUXjishu/61315.html 本文介绍在Linux 命令行界面中手动配置无线网卡的方法.目前流行的多数发行版都支持用图形界面的network ...
- dump_stack的简单使用 【转】
转自:http://blog.chinaunix.net/uid-26403844-id-3361770.html http://blog.csdn.net/ryfjx6/article/detail ...
- ES系列十六、集群配置和维护管理
一.修改配置文件 1.节点配置 1.vim elasticsearch.yml # ======================== Elasticsearch Configuration ===== ...
- 用nodejs搭建BS环境
var http = require('http'); http.createServer(function (req, res) {res.writeHead(200, {'Content-Type ...
- 『转载』hadoop 1.X到2.X的变化
表1新旧hadoop脚本/变量/位置变化表 改变项 原框架中 新框架中(Yarn) 备注 配置文件位置 ${hadoop_home_dir}/conf ${hadoop_home_dir}/etc/h ...