MySQL -- 外键约束
2018-03-25 16:12
330 查看
MySQL – 外键约束
外键
外键是一种用来在父表和子表间建立联系的一种类型。外键有助于保持数据的一致性和完整性。外键一旦被定义,就不允许删除在另一个表中具有关联关系的行。外键约束
MySQL的InnoDB引擎支持外键约束,其语法如下:
[CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name, ...) REFERENCES tbl_name (index_col_name,...) [ON DELETE reference_option] [ON UPDATE reference_option] reference_option: RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT
方括号里的是可选项,[index_name]即外键的名字,除非在子表中明确定义了该名字,否则将会按照如下规则进行自动隐式命名:
如果定义了
CONSTRAINT [symbol],那么其名字将被使用,否则
FOREIGN KEY index_name将被使用
如果
CONSTRAINT [symbol]和
FOREIGN KEY index_name都没有给出定义,那么外键引用的所在表的名字将会被作为外键名字的一部分来使用。
官方给出的例子:
CREATE TABLE product ( category INT NOT NULL, id INT NOT NULL, price DECIMAL, PRIMARY KEY(category, id) ) ENGINE=INNODB; CREATE TABLE customer ( id INT NOT NULL, PRIMARY KEY (id) ) ENGINE=INNODB; CREATE TABLE product_order ( no INT NOT NULL AUTO_INCREMENT, product_category INT NOT NULL, product_id INT NOT NULL, customer_id INT NOT NULL, PRIMARY KEY(no), INDEX (product_category, product_id), INDEX (customer_id), FOREIGN KEY (product_category, product_id) REFERENCES product(category, id) ON UPDATE CASCADE ON DELETE RESTRICT, FOREIGN KEY (customer_id) REFERENCES customer(id) ) ENGINE=INNODB;
新增外键:
ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name, ...) REFERENCES tbl_name (index_col_name,...) [ON DELETE reference_option] [ON UPDATE reference_option]
删除外键:
ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol;
相关文章推荐
- MySQL删除有外键约束的表数据方法介绍
- MySQL 外键与约束
- mysql 外键约束
- phpmyadmin中MySQL外键约束On Delete、On Update各选项解释
- SET FOREIGN_KEY_CHECKS=0;在Mysql中取消外键约束。
- MYSQL人事工资管理系统--主键和外键、查询约束(二)
- 总结三种MySQL 外键约束方式
- mysql学习-主键,外键,约束,索引
- mysql 外键约束
- Mysql 外键约束 on delete和on update
- MYSQL_使用外键约束(constraint)或触发器(trigger)来进行级联更新、删除
- MySQL删除表的时候忽略外键约束
- mysql建立外键约束
- MySQL删除表的时候忽略外键约束
- 使用Navicat for MySQL添加外键约束
- [知识积累]MySQL外键约束条件
- [转载]SET FOREIGN_KEY_CHECKS=0;在Mysql中取消外键约束
- mysql外键约束
- MySQL中使用外键约束的注意事项