数据库的外键虽然能保证数据数据一致性和完整性,但是也一定程度地影响了数据更新的性能。在开发中,我们使用PowerDesigner建立物理数据模型时,为了结构的清晰,增加可读性,会创建表与表之间的关联关系。

在实际开发中,数据库中一般不会存在外键,阿里的开发手册中也强制不使用外键与级联操作,一切外键概念必须在应用层解决。如果数据库中已存在外键了,怎么办呢?

删除所有表的外键

查询schema中所有外键名称然后拼接生成删除语句,再执行。

SELECT CONCAT('ALTER TABLE ',TABLE_SCHEMA,'.',TABLE_NAME,' DROP FOREIGN KEY ',CONSTRAINT_NAME,' ;')

FROM information_schema.TABLE_CONSTRAINTS c

WHERE c.TABLE_SCHEMA='库名' AND c.CONSTRAINT_TYPE='FOREIGN KEY';

1

2

3

修改MySQL变量FOREIGN_KEY_CHECKS

-- 禁用外键约束

SET FOREIGN_KEY_CHECKS = 0

-- 启用外键约束

SET FOREIGN_KEY_CHECKS = 1;

1

2

3

4

由于FOREIGN_KEY_CHECKS是基于session的,当关闭了session重新建立连接,这个变量就会恢复默认值,也就是开启外键约束,当然我们也可以全局的FOREIGN_KEY_CHECKS变量。

SET GLOBAL FOREIGN_KEY_CHECKS = 0;

1

或者:

SET @@GLOBAL.FOREIGN_KEY_CHECKS = 0;

1

修改完成后,我们可以查看修改后的结果

SELECT @@FOREIGN_KEY_CHECKS;

---------------------

作者:李阿飞

来源:CSDN

原文:https://blog.csdn.net/junlovejava/article/details/78360253

版权声明:本文为博主原创文章,转载请附上博文链接!

mysql删除表外键_MySQL删除所有表的外键约束、禁用外键约束相关推荐

  1. mysql删除外键_MySQL删除外键定义的方法

    MySQL外键在定以后,如果我们不再需要这个外键,可以进行删除操作,下面就为您介绍MySQL删除外键定义的方法,供您参考. 不知道大家有没有发现,在定义外键的时候articles.member_id外 ...

  2. mysql删除emp表的语句_MySQL删除数据表(DORP TABLE语句)

    在MySQL数据库中,对于不再需要的数据表,我们可以将其从数据库中删除. 在删除表的同时,表的结构和表中所有的数据都会被删除,因此在删除数据表之前最好先备份,以免造成无法挽回的损失. 下面我们来了解一 ...

  3. mysql删减表的关键字_Mysql 删除数据及数据表

    在Mysql 中删除数据以及数据表非常的容易,但是需要特别小心,因为一旦删除所有数据都会消失. 删除数据 删除表内数据,使用delete关键字. 删除指定条件的数据 删除用户表内id 为1 的用户:d ...

  4. mysql删除多表sql语句_Mysql删除多表及多表记录sql语句

    本文章总结了同时删除多个数据表与同时删除多个数据表的关系数据的方法,有需要的朋友可参考一下. 批量删除多表 删除所有pre_前缀的表 代码如下 复制代码 SELECT   CONCAT( 'drop ...

  5. mysql删除数据怎么回退_mysql 删除整个数据库

    ibdata1瘦身要注意的问题 错误方法一:导入数据库后,只是数据库test增大了而已,ibdata1还是默认的11M 1.只删除ibdata1或则ib_logfile0和ib_logfile1 2. ...

  6. mysql删除语句详解_MySQL 删除数据语句(DELETE)用法详解

    MySQL 删除数据操作使用 DELETE FROM 语句,它属于 DML(数据操作语言)范畴,DELETE 语句是一行一行地进行删除操作,同时它会将每行的操作记录到事务日志中,以便可以进行回滚操作, ...

  7. mysql 临时表增加主键_MySQL之重建表

    //MySQL之重建表// 在MySQL中,如果我们对大表频繁进行insert和delete操作,那么时间一长,这个表中会出现很多"空洞",也就是表碎片. 碎片产生的原因是inse ...

  8. mysql删除语句菜鸟教程_MySQL 删除数据库 | 菜鸟教程

    MySQL 删除数据库 使用 mysqladmin 删除数据库 使用普通用户登陆mysql服务器,你可能需要特定的权限来创建或者删除 MySQL 数据库. 所以我们这边使用root用户登录,root用 ...

  9. mysql大表修改表名原理_MySQL修改大表工具pt-online-schema-change原理

    MySQL修改大表工具pt-online-schema-change的使用限制: 1).如果修改表有外键,除非使用 –alter-foreign-keys-method 指定特定的值,否则工具不予执行 ...

最新文章

  1. Linux下批量重命名文件名为数字索引编号(0~N.xxx)的方法
  2. JavaScript教程——函数(arguments 对象)
  3. effective c++ 学习
  4. elementui表格复制_Element-UI中关于table表格的那些骚操作
  5. Python安装错误 building 'statsmodels. extensionerror: Microsoft Visual C++ 14.0 is
  6. 很多优秀人感觉是:让他实际工作,他可能会考虑得很全面,而答题的时候,他就显得比较马虎,完成要求就算结束...
  7. Drawable 添加过滤色,改变图片颜色
  8. c++ eos智能合约开发_[EOS智能合约]第二节:用EOS开发一个To-do List小应用
  9. 循环内的局部变量和性能
  10. Linux下find命令使用
  11. IE9 Preview 4的CSS3支持。
  12. oracle还原 ora 39111,在server2008上进行impdp引发的(ORA-39070)的问题
  13. 实时操作系统和优先级反转
  14. [ZT]软件质量属性
  15. VSCode 中文乱码设置
  16. 在Java中为JFrame添加背景音乐
  17. oracle rac定时清理归档日志,Rman 定时删除归档日志
  18. 数据存储---内存列式数据库KDB+(Q)文档
  19. [SSL_CHX][2021-08-19]子矩阵求和
  20. 【cocos creator实战】记录微信小游戏登录授权的开发-小游戏审核

热门文章

  1. sql还原数据库备份数据库_有关数据库备份,还原和恢复SQL面试问题–第三部分
  2. 51nod1432 独木舟
  3. 关于用Java写的贪吃蛇游戏的一些感想
  4. oracle的一些学习
  5. 2019-02-25 SQL:cast(itemvalue as decimal(19,4))
  6. reportgen :python生产pptx
  7. [洛谷P2257] YY的GCD (莫比乌斯反演)
  8. 相邀直播app最新入驻58位海外阿姨
  9. $《第一行代码:Android》读书笔记——第6章 数据持久化
  10. Android 学习笔记 Service服务与远程通信...(AIDL)