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

本文将从创建MySQL表单时添加外键、给已存在表单添加外键、删除外键3个方面进行介绍,属于何种情况可快速定位。

创建MySQL表单时添加外键

外键是外部引用,因此作为外键的表一定是已经存在的,此处以ta、tb两个表做一个简单介绍。

现有表单ta数据如下:

+------+---------+

| cid  | cname   |

+------+---------+

|    1 | Chinese |

|    2 | English |

+------+---------+

// 将引入ta表cid属性

ta表单结构如下:

| ta    | CREATE TABLE `ta` (

`cid` int(11) NOT NULL,

`cname` varchar(20) DEFAULT NULL,

PRIMARY KEY (`cid`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

//此处贴出ta表结构主要在于,作为外键引入的字段必须是唯一的,满足唯一性条件的有主键PRIMARY KEY与唯一UNIQUE,此处cid作为主键具备唯一性。

需要将ta作为外键引入tb,那么创建的tb表如下:

CREATE TABLE tb(

cid INT,

id INT,

name VARCHAR(20),

FOREIGN KEY (cid) REFERENCES ta(cid)

);

给已经存在的MySQL表单添加外键

ALTER TABLE tb ADD FOREIGN KEY(cid) REFERENCES ta(cid);

//此处需要注意的是两个字段名都需要加上括号。

删除外键

删除外键无法直接DROP FOREIGN KEY + 该字段名,而应该进行两步操作:

1、SHOW CREATE TABLE tb;

其返回结果如下:

| tb    | CREATE TABLE `tb` (

`cid` int(11) DEFAULT NULL,

`id` int(11) DEFAULT NULL,

`name` varchar(20) DEFAULT NULL,

KEY `cid` (`cid`),

CONSTRAINT `tb_ibfk_1` FOREIGN KEY (`cid`) REFERENCES `ta` (`cid`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

// 需要注意的是倒数第二行CONSTRAINT得到的结果`tb_ibfk_1`,此处才是DROP的目标。

2、ALTER TABLE tb DROP FOREIGN KEY tb_ibfk_1;

// 这样才能成功删除外键。

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

  1. mysql新增范围之外数据_mysql第二天 数据的增删改查补充及外键

    1.主键的一些补充: 1.1 一个表中只允许一个主键,但是多个列可以共同拥有一个主键: 上节课内容学的命名主键的方式:(具有一定的约束条件,不能为空,并且不能重复) mysql>create t ...

  2. mysql 绿色版 无法启动_MySql免安装版安装配置,附MySQL服务无法启动解决方案

    文首提要: 我下载的MySQL版本是:mysql-5.7.17-winx64.zip  Archive版:系统:Windows7 64位. 一.解压文件 下载好MySQL后,解压到D盘下,也可以根据个 ...

  3. mysql的配置文件几个_mysql多实例(多个配置文件方式)

    1)简介mysql 版本:mysql-5.5.27cmake:cmake-2.8.8操作系统:CentOS6.5mysql实例数:3个实例占用端口分别为:3306.3307.33082)本次安装所有的 ...

  4. 关于mysql添加外键的时候报错_MySQL添加外键时报错:1215 Cannot add the foreign key constraint的一个可能解决方法...

    今天给设计好的班级表和专业表以及院系表添加外键时,报了这样一个错误 ** 1215 Cannot add the foreign key constraint ** 去百度搜了一圈,说可能时因为字段类 ...

  5. mysql添加外键1215错误_MySQL添加外键时报错:1215 Cannot add the foreign key constraint的解决方法...

    前言 这篇文章主要涉及到在数据创建表时,遇到ERROR 1215 (HY000): Cannot add foreign key constraint 问题方面的内容,对于在数据创建表时,遇到同样问题 ...

  6. oracle_sqlserver和mysql获取表外键的方法_mysql、sqlserver、oracle三种数据库维护索引、外键、字段语法总结...

    mysql.sqlserver.oracle三种数据库维护索引.外键.字段语法总结 1.     MYSQL数据库 1)    创建索引 CREATE INDEX index_name ON tabl ...

  7. mysql count join速度慢_MySql两张百万级表关联的count效率求解? 400 报错-问答-阿里云开发者社区-阿里云...

    select count(1) from B b inner join A a on a.id = b.personid where b.code like '32%' 这样试试呢######sele ...

  8. mysql读取自增值失败_MySQL添加自增列失败

    想往一个mysql表里添加一个自增列做主键,居然失败报告无法读取,这是怎么回事? 1.问题描述 有位朋友在升级discuz论坛数据库时遇到问题了,想给一个表添加自增列做主键,结果发生下面的报错: my ...

  9. mysql索引增加栏位_mysql 添加索引 mysql 如何创建索引

    1.添加PRIMARY KEY(主键索引) mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 2.添加UNIQUE(唯一索引 ...

最新文章

  1. 基于用户画像 《列变行》 特征打标显示
  2. 全球及中国皮革和纺织品用甲酸行业竞争调查分析及投资规划报告2021年版
  3. C#的常见算法(面试)(转)
  4. 设单链表中存放n个字符,试设计一个算法,使用栈推断该字符串是否中心对称...
  5. torch和tensorflow各版本下载地址,tensorflow与cuda版本对应关系
  6. Vue学习笔记之10-组件化开发
  7. Mac原生浏览器Safari,那些你都不知道的使用技巧
  8. mseed读取[2]
  9. Class文件是个啥?
  10. Web前端工程师的职业规划,助你走好前端路
  11. 一名IT界“老”技术人关于学习与成长的分享,受益!
  12. 如何理解面向对象的封装、继承、多态
  13. 启xin宝app的token算法破解——抓包分析篇(一)
  14. 让Android Studio项目通过阿里云 代理加速下载依赖资源
  15. PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation 中文翻译
  16. 积分风控体系建设包含的四个内容
  17. 网络基础3----->广域网传输流程
  18. cegui + directX9
  19. Rosetta Stone 4.1.15 下载破解和语言包
  20. vscode使用备忘

热门文章

  1. 女人身体8大隐私部位长得越丑健康指数越高_113
  2. error: can‘t create transaction lock on /var/lib/rpm/.rpm.lock (Permission denied)
  3. 商米科技首次冲刺上市失败:科创属性遭质疑,连年亏损造血难?
  4. QActionGroup - setExclusive(互斥)
  5. 两名老人接力营救轻生女子一人溺亡
  6. 移动互联网终端的touch事件,touchstart, touchend, touchmove
  7. 1953年克里克和沃森发现DNA双螺旋结构
  8. 河北计算机对口高考数学考试题,2015年河北省对口高考数学试题(含答案)
  9. 零跑科技赴港上市:销量“数据打架”,真假难辨,如何取信于人?
  10. 你知不知道,天空没有想象中蓝