概述

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

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


1、修改MySQL变量FOREIGN_KEY_CHECKS(批量禁用启用所有表的外键)

-- 会话级别禁用外键约束SET FOREIGN_KEY_CHECKS = 0;-- 会话级别启用外键约束SET FOREIGN_KEY_CHECKS = 1;-- 全局禁用外键约束SET GLOBAL FOREIGN_KEY_CHECKS = 0;或者 SET @@GLOBAL.FOREIGN_KEY_CHECKS = 0;-- 全局启用外键约束SET GLOBAL FOREIGN_KEY_CHECKS = 1;

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

SELECT @@FOREIGN_KEY_CHECKS;

2、批量删除所有表的外键

查询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';

觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~

外键查询_详解MySQL数据库删除所有表的外键约束、禁用外键约束相关脚本相关推荐

  1. mysql操作日志记录查询_详解mysql数据库参数log_timestamps--控制日志记录使用的时区...

    概述 最近发现之前安装的MySQL 5.7.27,其中的error log.general log日志里面日志时间的时区不对. 思路: mysql 5.7.2新增了参数 log_timestamps, ...

  2. mysql临键锁_详解 MySql InnoDB 中的三种行锁(记录锁、间隙锁与临键锁)

    详解 MySql InnoDB 中的三种行锁(记录锁.间隙锁与临键锁) 前言 InnoDB 通过 MVCC 和 NEXT-KEY Locks,解决了在可重复读的事务隔离级别下出现幻读的问题.MVCC  ...

  3. mysql 外键设置_详解MySQL外键设置

    MySQL外键设置是学习MySQL数据库过程中不能不提的,下面就会为您详细介绍MySQL外键设置的方法,希望对您学习MySQL外键设置方面能有所帮助. 外键的作用: 保持数据一致性,完整性,主要目的是 ...

  4. mysql 添加外键 完整_详解mysql添加外键的方法

    本文主要向大家介绍了mysql添加外键的方法,通过具体的实例让大家了解,希望对大家学习mysql有所帮助. 为已经添加好的数据表添加外键: 语法:alter table 表名 add constrai ...

  5. hive replace替换多个_详解Mysql数据库中replace与replace into的用法及区别

    概述 Mysql数据库replace与replace into都是经常会用到的功能:replace其实是做了一次update操作,而不是先delete再insert:而replace into其实与i ...

  6. mysql 编辑数据库内容_详解mysql数据库增删改操作

    插入数据 insert into 表名(列名1,列名2,列名3) values(值1,值2,值3); insert into user(user_id,name,age) values(1,'nice ...

  7. SQL数据库不用SQL语句能显示全表的内容_详解mysql数据库sql优化技巧总结

    概述 关于SQL优化的教程很多,但是比较杂乱.所以抽空整理了一下,也写出来跟大家分享一下.以下主要针对MySQL数据库,Oracle数据库也可以参考. 优化技巧总结 1.建索引 对查询进行优化,要尽量 ...

  8. mysql 修改时间段内_详解mysql数据库MyISAM存储引擎如何转为Innodb及其中的注意点...

    概述 mysql数据库存储引擎为MyISAM的时候,在大访问量的情况下数据表有可能会出现被锁的情况,这就会导致用户连接网站时超时而返回502,此时就需要MySQL数据库MyISAM存储引擎转为Inno ...

  9. 详解mysql数据库的启动与终止_详解MySQL数据库的启动与终止(一)

    由于MySQL服务器具有多种安装分发,而且能够运行在多种操作平台之上,因此它的启动与停止的方法也多种多样.你可以根据实际情况使用其中的一种.在你安装.升级或者维护系统时,你可能需要多次启动和终止服务器 ...

最新文章

  1. Windows下Eclipse和PyDev搭建完美Python开发环境
  2. 一维行滤波提取俯视图下的车道线特征
  3. 当 AI 足够聪明时,我们的验证码还有用吗?
  4. 动手学PaddlePaddle(0):新版本PaddlePaddle安装
  5. 12无法使用otg_12个冷知识:或许只能看看而无法使用,但却真实存在着
  6. 微软一站式示例代码库(中文版)2011-07-14版本, 新添加ASP.NET, Azure, Silverlight, WinForm等14个Sample...
  7. 51-表达式计算(带括号的)
  8. [29期] 打仗、打球、打游戏、打代码。。。
  9. F5刷新的时候只刷新里面的内联框架里面的页面
  10. SQL Server 2008支持将数据导出为脚本 / 导出单张表
  11. 如何用Scapy写一个端口扫描器?
  12. 详解Autosar Arxml中的CANFD报文及格式
  13. html画excel表格边框,设置Excel表格和单元格的边框和底纹 html表格单元格边框
  14. 基于keras实现双向GRU的中文情感分析
  15. Python:导出QQ聊天记录-让我们看看逗比群友都在聊什么
  16. 深入浅出理解 MyBatis-Plus(最新版3.5.2)
  17. 国际手机号码格式化 和 手机邮箱中间部分用****替换
  18. 轮播图进度条同步切换(参考漫威官网)
  19. 【Android UI】贝塞尔曲线 ② ( 二阶贝塞尔曲线公式 | 三阶贝塞尔曲线及公式 | 高阶贝塞尔曲线 )
  20. 力扣 2303. 计算应缴税款总额

热门文章

  1. java jdbc 参数_java_jdbc_可变参数_MetaData
  2. revit建筑样板_BIM技术在历史保护建筑中的具体应用(艾三维BIM分享)
  3. python 将多张大小不同的图依次放入较大的黑色背景_用户消费行为分析(Python)...
  4. python学习路线--从入门到入土
  5. (转)解决nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed错误
  6. SQL连接查询_ INNER JOIN
  7. JavaScript Oriented[探究面向对象的JavaScript高级语言特性]
  8. Java单例模式实现(线程安全)
  9. jquery 表单 清空
  10. 【ACM】nyoj_2_括号配对问题_201308091548