mysql设置外键

. cascade方式
在父表上update/delete记录时,同步update/delete掉子表的匹配记录

. set null方式
在父表上update/delete记录时,将子表上匹配记录的列设为null
要注意子表的外键列不能为not null

. No action方式
如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作

. Restrict方式
同no action, 都是立即检查外键约束

. Set default方式
父表有变更时,子表将外键列设置成一个默认的值 但Innodb不能识别

用Navicat设置外键注意:

  表引擎必须是innodb(父表和子表都是,子表是有外键的表)

  外键和关联的字段名类型必须完全一样(吃了unsigned的亏)

时间: 2024-10-01 04:33:24

mysql设置外键的相关文章

MySQL设置外键报错 #1452 - Cannot add or update a child row: a foreign key constraint fails 解决方法

MySQL数据库,当我尝试在A表中设置B表的主键为外键时,报出错误:#1452 - Cannot add or update a child row: a foreign key constraint fails  于是去搜索了一下 "#1452 - Cannot add or update a child row: a foreign key constraint fails" 的含义与解决方法,根据这篇博文去排查了报错原因,排除了可能1和可能2,然后去研究可能3的具体含义,一开始并

mysql设置外键约束开启-关闭

在MySQL中删除一张表或一条数据的时候,出现 [Err] 1451 -Cannot delete or update a parent row: a foreign key constraint fails (...) 这是因为MySQL中设置了foreign key关联,造成无法更新或删除数据.可以通过设置FOREIGN_KEY_CHECKS变量来避免这种情况.   我们可以使用     SET FOREIGN_KEY_CHECKS=0;来禁用外键约束. 之后再用    SET FOREIG

mysql 设置外键 四大属性 CASCADE SET NULL NO ACTION RESTRICT 理解

CASCADE:主表delete.update的时候,从表会delete.update掉关联记录: SET NULL:主表delete.update的时候,从表会将关联记录的外键字段所在列设为null,注意在设计从表时外键不能设为not null: NO ACTION:先检查外键 在从表中是否有关联数据 有则不运行删除 (可以先删除从表的): RESTRICT:同 NO ACTION: 原文地址:https://www.cnblogs.com/G921123/p/10249775.html

(转)mysql 无法设置外键的原因总结

在Mysql中创建外键时,经常会遇到问题而失败,这是因为Mysql中还有很多细节需要我们去留意,我自己总结并查阅资料后列出了以下几种常见原因. 1.  两个字段的类型或者大小不严格匹配.例如,如果一个是int(10),那么外键也必须设置成int(10),而不是int(11),也不能是tinyint.另外,你还必须确定两个字段是否一个为 signed,而另一个又是unsigned(即:无符号),这两字段必须严格地一致匹配,更多关于signed和unsigned的信息,请参阅:http://www.

(MYSQL)给数据库设置外键

设置外键有两种方式,一种是在创建表的时候关联外键,另一种是给已经存在的表添加外键.具体操作如下: 1.在创建表时的操作 班级表(主表): create table tb1( id INT PRIMARY KEY AUTO_INCREMENT, classname VARCHAR(20) NOT NULL ); 用户表(子表): create table tb2( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(20) NOT NULL, c

navicat如何设置外键

今天上午刚刚弄明白了在navicat for mysql上如何设置外键,现在分享出来,希望能够对大家有帮助. 先介绍一下基本情况.现在有两个表一张是teacher表一张是dept表,现在我想把teacher表中的dept属性设置为外键,关联dept表中的code属性.具体情况如图:好了,基本情况介绍完毕,现在开始教你们navicat for mysql 怎么设置外键. 打开我的navicat,然后找到我的teacher表,选中它,然后点击菜单栏上的‘design table’. 2 在弹出的对话

MySQL的外键,修改表,基本数据类型,表级别操作,其他(条件,通配符,分页,排序,分组,联合,连表操作)

MySQL的外键,修改表,基本数据类型,表级别操作,其他(条件,通配符,分页,排序,分组,联合,连表操作): a.创建2张表 create table userinfo(nid int not null auto_increment primary key, name varchar(10), age int, part_nid int )engine=innodb default charset=utf8; create table part( nid int not null auto_in

MySQL添加外键Foreign Keys出错,报错[HY000][3780]

今天写开发文档的时候需要做一下数据结构相关的内容,于是就想着一个快捷一点儿的操作,直接在DataGrip里面调用视图,然后将视图打印为PDF,这样就可以直接截图获取到图片了.由于开发的过程中也没有怎么注重外键的建立,因为本来就是一个小小的比赛,所以生成视图的时候外键联系的箭头都没有,真的是自闭了,如果这个直接给评委看,评委估计会气哭...所以我打算花点时间加一些外键上去,心里想着也花不了多少时间,谁知道,这下子还遇到一些哲学问题! 首先看下,本来数据库表视图是这样的,我只是想多增加一些外键约束,

MySQL的外键约束:Cascade/Restrict/No action/SET NULL

转自:http://blog.csdn.net/cnjsnt_s/article/details/5548280 具体使用时需要参考:http://blog.csdn.net/codeforme/article/details/5539454 (注:没看很明白,囧.) MySQL有两种常用的引擎类型:MyISAM和InnoDB.目前只有InnoDB引擎类型支持外键约束.InnoDB中外键约束定义的语法如下: [CONSTRAINT [symbol]] FOREIGN KEY [index_nam