语法:alter table 表名 add constraint FK_ID foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名);

例: alter table tb_active add constraint FK_ID foreign key(user_id) REFERENCES tb_user(id)

//FK_ID是外键的名称

/*

CREATE TABLE tb_active (

id int(11) NOT NULL AUTO_INCREMENT,

title varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,

content text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,

user_id int(11) NOT NULL,

PRIMARY KEY (id),

KEY user_id (user_id),

KEY user_id_2 (user_id),

CONSTRAINT FK_ID FOREIGN KEY (user_id) REFERENCES tb_user (id)

) ENGINE=InnoDB DEFAULT CHARSET=latin1

*/

删除外键

语法: ALTER TABLE table-name DROP FOREIGN KEY key-id;

例: ALTER TABLE tb_active DROP FOREIGN KEY FK_ID

自动键更新和删除:

外键可以保证新插入的记录的完整性,但是,如果在REFERENCES从句中已命名的表删除记录会怎么样?在使用同样的值作为外键的辅助表中会发生什么?

很明显,那些记录也应该被删除,否则在数据库中就会有很多无意义的孤立记录,MYSQL可以通过向FOREIGN KEY...REFERENCES修饰符添加一个ON DELETE 或ON UPDATE子句简化任务,它告诉了数据库在这种情况如何处理孤立任务

关键字 含义

CASCADE 删除包含与已删除键值有参照关系的所有记录

SET NULL 修改包含与已删除键值有参照关系的所有记录,使用NULL值替换(只能用于已标记为NOT NULL的字段)

RESTRICT 拒绝删除要求,直到使用删除键值的辅助表被手工删除,并且没有参照时(这是默认设置,也是最安全的设置)

NO ACTION 啥也不做

请注意,通过ON UPDATE 和 ON DELETE规则,设置MYSQL能够实现自动操作时,如果键的关系没有设置好,可能会导致严重的数据破坏,

例如:如果一系列的表通过外键关系和ON DELETE CASCADE 规则连接时,任意一个主表的变化都会导致甚至只和原始删除有一些将要联系的记录在没有警告的情况被删除,所以,我们在操作之前还要检查这些规则的,操作之后还要再次检查.

添加外键

alter table locstock add foreign key locstock_ibfk2(stockid) references product(stockid)

locstock 为表名, locstock_ibfk2 为外键名 第一个括号里填写外键列名, product为表名,第二个括号里是写外键关联的列名

删除外键

alter table locstock drop foreign key locstock_ibfk2

查看表有哪些外键

show create table locstock

[CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...)

REFERENCES tbl_name (index_col_name, ...)

[ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION}]

[ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION}]

所有tables必须是InnoDB型 ,它们不能是临时表。

在引用表中,必须有一个索引,外键列以同样的顺序被列在其中作为第一列。这样一个索引如果不存在,它必须在引用表里被自动创建。

在引用表中,必须有一个索引,被引用的列以同样的顺序被列在其中作为第一列。

不支持对外键列的索引前缀。这样的后果之一是BLOB和TEXT列不被包括在一个外键中, 这是因为对这些列的索引必须总是包含一个前缀长度。

如果CONSTRAINTsymbol 被给出,它在数据库里必须是唯一的。如果它没有被给出,InnoDB自动创建这个名字。

mysql 增加外键_Mysql 添加外键相关推荐

  1. mysql 增加外键_mysql添加外键的4种方式

    今天开始复习,在过后的几天里开始在博客上记录一下平时疏忽的知识点,温故而知新 屁话不多--直接上货 创建主表: 班级 CREATE TABLE class(cid INT PRIMARY KEY AU ...

  2. mysql实用管理器添加外键_MySQL 添加外键

    MySQL 添加外键 MySQL 添加外键 DROP TABLE IF EXISTS `nation`; CREATE TABLE `nation`( `pii_Nation` smallint(2) ...

  3. mysql中怎样插入外键_MySQL 添加外键

    MySQL 添加外键 MySQL 添加外键 DROP TABLE IF EXISTS `nation`; CREATE TABLE `nation`( `pii_Nation` smallint(2) ...

  4. 修改mysql 外键_MYSQL添加外键

    给商品表(从表)添加一个外键 ALTER TABLE product ADD CONSTRAINT FK_cno FOREIGN KEY(cno) REFERENCES category(cid  从 ...

  5. 给mysql添加主键_MySQL添加主键、索引

    查看索引 SHOW INDEX FROM  数据库表名 比如:SHOW INDEX FROM order_info; 添加索引 alter table 数据库add index 索引名称(数据库字段名 ...

  6. mysql myisam存储引擎不能添加外键,添加后显示成功,实则失败

    mysql myisam存储引擎不能添加外键,添加后显示成功,实则失败. 添加显示成功后,可以轻松删除父表.

  7. mysql navicat如何为表添加外键?

    mysql navicat如何为表添加外键? 1.使用Navicat设置 打开设计表项: 点击外键项: 外键是当前表可以指向其他表的主键或数据唯一属性的属性. 当前表的sno属性是一个外键,它参考的是 ...

  8. mysql 外键报错_MySQL添加外键、删除外键方式,MySQL删除外键报错快速解决方案...

    外键的作用主要在于对各类表单进行约束,避免出现冗余数据及超出数据.那么,MySQL如何添加与删除外键?添加删除外键时报错是什么原因? 本文将从创建MySQL表单时添加外键.给已存在表单添加外键.删除外 ...

  9. mysql 外键冲突_mysql添加外键错误是什么原因

    mysql添加外键错误的原因:1.外键的字段与关联字段的类型不匹配:2.外键名重复:3.外键没有建立索引:4.外键存在默认值:5.语法错误. 原因分析: 第一种情况:外键的字段与关联的字段的类型不匹配 ...

最新文章

  1. 【java】第一阶段基础知识整理
  2. 常见电子元件实物照片
  3. 类型转换_异常处理机制
  4. 云栖大会展出两款一体机,搭载新一代无影融合架构
  5. Bitmap简单使用及简单解析
  6. html的form表单详解
  7. gsonformat java代码_AndroidStudio插件GsonFormat快速实现JavaBean
  8. 内存溢出(OutOfMemoryError)与栈溢出(StackOverflowError)
  9. EKF SLAM学习笔记02
  10. php 301目录对应,PHP 301转向实现代码
  11. 数据结构与算法分析 收获总结 第11章 图
  12. 一个隐藏在角落的文章
  13. 出现“未报告的异常错误,必须对其进行捕获或声明以便抛出”的解决
  14. 如何用Python操控手机APP攻略!建议收藏!很全面
  15. 全国计算机考试如何查准考证号
  16. JD青龙面板任务代理池部署与使用教程
  17. 单片机之基础编程 流水灯(二)
  18. HDU 5983(模拟魔方 模拟)
  19. WINPE不需要密码,直接登陆系统
  20. 怎么理解集成运放并联电压正反馈_「硬见小百科」详解运放及其补偿技术

热门文章

  1. 华为鸿蒙系统手机什么时候,再见EMUI,华为鸿蒙系统6月2日正式发布
  2. linux关闭bond网卡,Linux 网卡Bond
  3. Windows -- 如何在机器上安装一个 Centos 虚拟机 为虚拟机配置一个与本机同网段的静态ip
  4. 快捷键Java模板注释_eclipse 设置注释模板& 调出注释快捷键
  5. 新冠DNA疫苗获准与灭活疫苗开展探索序贯免疫策略的临床试验 | 医药健闻
  6. Java(匿名内部类)
  7. 027-使用 go 绘制长方体
  8. Fast DDS入门一、Fast DDS介绍
  9. Python 中变量名后面加冒号是什么意思?
  10. 方舟生存进化怎么开最新服务器,方舟生存进化手游新服开启公告 新增8组免费PVXc服务器...