更改具有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 ...
随机推荐
- slice() 和splice()
splice() 方法与 slice() 方法的作用是不同的,splice() 方法会直接对数组进行修改. 1, splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目. splice ...
- d 属性: 赋予字段执行动作的能力
1.对只读属性误解 property AppSetting: ISuperobject read fAppSetting;当看到 AppInfo.AppSetting.D['lastLat'] := ...
- Python 入门基础19 --面向对象、封装
2019.04.17 一.面向对象与面向过程 二.名称空间操作 三.类与对象的概念 四.语法 五.对象查找属性的顺序 2019.04.18 1.类与对象的所有概念:__init__方法 2.类的方法与 ...
- FPN 学习笔记
通常,利用网络对物体进行检测时,浅层网络分辨率高,学到的是图片的细节特征,深层网络,分辨率低,学到的更多的是语义特征. 1).通常的CNN使用如下图中显示的网络,使用最后一层特征图进行预测 例如VGG ...
- 【apache tika】apache tika获取文件内容(与FileUtils的对比)
Tika支持多种功能: 文档类型检测 内容提取 元数据提取 语言检测 重要特点: 统一解析器接口:Tika封装在一个单一的解析器接口的第三方解析器库.由于这个特征,用户逸出从选择合适的解析器库的负担, ...
- 用struts2 s2-045漏洞拿站记录
浏览FreeBuf时发现的文章,新出的漏洞: http://www.freebuf.com/vuls/128668.html 漏洞一出,各位大神早就写出POC: http://www.reg008.c ...
- Docker安装ActiveMQ
⒈下载 docker pull webcenter/activemq ⒉运行 docker run -d --name myactivemq -p 8161:8161 -p 61613:61613 - ...
- freeRTOS中文实用教程3--中断管理之延迟中断处理
1.前言 嵌入式实时操作系统需要对整个系统环境产生的事件作出响应.可以采用中断方式也可以采用轮询方式来进行处理.如果采用中断方式,则希望ISR(中断服务例程)的处理时间越短越好. 注:必须说明的是,只 ...
- 在12C上创建wm_concat函数
11gr2和12C上已经摒弃了wm_concat函数,当时我们很多程序员在程序中确使用了该函数,导致程序出现错误,为了减轻程序员修改程序的工作量,只有通过手工创建个wm_concat函数,来临时解决该 ...
- HTML学习笔记07-头部
HTML <head> 元素 <head> 元素包含了所有的头部标签元素.在 <head>元素中你可以插入脚本(scripts), 样式文件(CSS),及各种met ...