MySQL—FOREIGN KEY

作用:保持数据一致性,完整性。实现一对一或一对多关系。(学习的过程中,老师说,实际的生产中,一般不使用物理上的外键约束的,都是使用逻辑上的外键约束)

要求:

  1. 父表与子表的存储引擎必须相等,而且只能是InnoDB;
  2. 禁止使用临时表;
  3. 外键列和参照列的数据类型相同。数字的长度和是否有符号位必须相同。字符的长度则可以不同;
  4. 外键列和参照列必须创建索引。如果,外键列不存在索引的话,MySQL会自动创建索引。

约束的参照操作(在进行数据插入的时候,是先插入父表,在插入子表的)

  1. CASCADE:从父表删除或更新,且自动删除或更新 子表中匹配的行
  2. SET NULL: 从父表删除或更新行,并设置子表中的外键列为NULL。如果使用该选项,必须保证子表列没有指定NOT NULL;
  3. RESTRICT:决绝对父表的删除或更新操作;
  4. NO ACTION:标准sql关键字,在MySQL中,与RESTRICT相同;

Eg:FOREIGN KEY(Pid) REFERENCES province(Id) ON DELETE CASCADE;

时间: 2024-11-07 15:20:40

MySQL—FOREIGN KEY的相关文章

MySQL Foreign Key

ntroduction to MySQL foreign key A foreign key is a field in a table that matches another field of another table. A foreign key places constraints on data in the related tables, which enables MySQL to maintain referential integrity. Let’s take a look

MySQL foreign key - How to define a foreign key in MySQL

table of contents Creating a MySQL foreign key MySQL foreign key support in database engines MySQL foreign keys and ON UPDATE and ON DELETE MySQL foreign key FAQ: How do I define a foreign key in MySQL? Answer: Here's a quick example of how I typical

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

一,什么是foreign key,及其完整性 个人觉得,foreign key就是表与表之间的某种约定的关系,由于这种关系的存在,我们能够让表与表之间的数据,更加的完整,关连性更强.关于完整性,关连性我举个例子,大家就会明白了. 有二张表,一张是用户表,一张是订单表: 1,如果我删除了用户表里的用户,那么订单表里面根这个用户有关的数据,就成了无头数据了,不完整了. 2,如果我在订单表里面,随便插入了一条数据,这个订单在用户表里面,没有与之对应的用户.这样数据也不完整了. 如果有外键的话,就方便多

mysql foreign key 外键

ALTER TABLE `fd_rel_customer_doctor` ADD CONSTRAINT `FK_fd_rel_customer_doctor_1` FOREIGN KEY (`CUSTOMER_USER_ID`) REFERENCES `fd_customer_user` (`CUSTOMER_USER_ID`), ADD CONSTRAINT `FK_fd_rel_customer_doctor_2` FOREIGN KEY (`DOCTOR_ID`) REFERENCES `

【MySQL】FOREIGN KEY

1 1 FOREIGN KEY reference PRIMARY KEY CREATE TABLE `roottb` ( `id` INT(11) UNSIGNED AUTO_INCREMENT NOT NULL, `data` VARCHAR(100) NOT NULL DEFAULT '', PRIMARY KEY (`id`) ) ENGINE =InnoDB; CREATE TABLE `subtb` ( `id` INT(11) UNSIGNED AUTO_INCREMENT NOT

更改具有Foreign key约束的表

1.Foreign key 说明: foreign key(外键) 建立起了表与表之间的约束关系,让表与表之间的数据更具有完整性和关联性.设想,有两张表A.B,A表中保存了许多电脑制造商的信息,比如联想.戴尔.惠普和华硕,B表中保存了许多多型号的电脑,比如lenovo1,lenovo2,hp1,hp2,hp3,dell1,dell2,asus1,现在如何将两张具有从属关系(每个电脑品牌下都有很多型号的电脑)的表关联起来呢? 我们可以在B表中设置外键.首先我们给这个外键关联关系起个名字xx,外键作

Mysql create constraint foreign key faild.trouble shooting method share

mysql> create table tb_test (id int(10) not null auto_increment primary key,action_id int(10) not null,error_code int(10) not null default 0,desc_key varchar(64) not null default 'audit.log.default',INDEX(action_id),constraint `FK_ACTIONID` foreign k

MYSQL外键(Foreign Key)的使用

转载自:http://www.cppblog.com/wolf/articles/69089.html#Post 原文实在太精辟又形象,忍不住转载过来留下笔记,像作者致敬 在MySQL 3.23.44版本后,InnoDB引擎类型的表支持了外键约束.外键的使用条件:1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持):2.外键列必须建立了索引,MySQL 4.1.2以后的版本在建立外键时会自动创建索引,但如果在较早的版本则需要显示建立: 3.外

MYSQL: Cannot delete or update a parent row: a foreign key constraint fails

这可能是MySQL在InnoDB中设置了foreign key关联,造成无法更新或删除数据.可以通过设置FOREIGN_KEY_CHECKS变量来避免这种情况. SET FOREIGN_KEY_CHECKS = 0; 删除完成后设置 SET FOREIGN_KEY_CHECKS = 1; 其他: 关闭唯一性校验 set unique_checks=0; set unique_checks=1;