精华内容
下载资源
问答
  • 主要介绍了MySQL删除有外键约束的表数据方法介绍,还是非常不错的,这里给大家分享下,需要的朋友可以参考。
  • 删除表不是特别常用,特别是对于存在外键关联的表删除更得小心。但是在开发过程中,发现Schema设计的问题而且要删除现有的数据库中所有的表来重新创建也是常的事情;另外在测试的时候,也需要重新创建数据库...

    删除表不是特别常用,特别是对于存在外键关联的表,删除更得小心。但是在开发过程中,发现Schema设计的有问题而且要删除现有的数据库中所有的表来重新创建也是常有的事情;另外在测试的时候,也有需要重新创建数据库的所有表。当然很多自动化工具也可以做这样的事情。

    删除表的时候有时会遇到这样的错误消息:

    1
    ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails

    这是因为你尝试删除的表中的字段被用作了其他表的外键,因此在删除这个表(父表)之前必须先删除具有外键的表(子表)。也就是说,删除表的过程需要和创建表的过程一致。

    但是这往往不可接受,一方面如果表太多了,手动排序有点不可接受;另一方面,现在还没有自动的工具对进行排序(其实也不是不能实现)。因此,MySQL中提供了一个变量FOREIGN_KEY_CHECKS来设置是否在必要的时候检查外键约束。

    一般比较推荐这样做:

    首先,自动生成所有的DROP语句,将其中的MyDatabaseName替换成你的数据库名称:

    1
    2
    3
    SELECT concat('DROP TABLE IF EXISTS ', table_name, ';')
    FROM information_schema.tables
    WHERE table_schema = 'MyDatabaseName';

    然后,在生成的代码后添加下面设置FOREIGN_KEY_CHECKS变量的语句:

    1
    2
    3
    SET FOREIGN_KEY_CHECKS = 0;
    -- 上一步生成的DROP语句;
    SET FOREIGN_KEY_CHECKS = 1;

    不过,要是忘记了最后一句也没太大关系,这个变量是基于Session的,也就是说,当你关闭了客户端,重新建立连接的时候,这个变量会恢复默认值。如果需要在全局范围内不检查外键约束(这种情况会比较少吧),可以这样做:

    1
    SET GLOBAL FOREIGN_KEY_CHECKS = 0;

    或者

    1
    set @@global.FOREIGN_KEY_CHECKS = 0;



    展开全文
  • SELECT @@FOREIGN_KEY_CHECKS; 查询当前外键约束是否打开 SET FOREIGN_KEY_CHECKS=1; 设置为1时候外键约束是打开,设置为0时候外键约束是关闭;
    SELECT @@FOREIGN_KEY_CHECKS;
    查询当前外键约束是否打开
    SET FOREIGN_KEY_CHECKS=1;
    设置为1的时候外键约束是打开的,设置为0的时候外键约束是关闭的;

     

    展开全文
  • MySQL 如何删除有外键约束的表数据

    千次阅读 2019-05-18 17:32:24
    MySQL 如何删除有外键约束的表数据 今天删除数据库中数据,提示因为设置了foreign key,无法修改删除 可以通过设置FOREIGN_KEY_CHECKS变量来避免这种情况。 SET FOREIGN_KEY_CHECKS=0; 删除,更新数据, 恢复外键 SET...

    有时候需要删除数据表,提示因为设置了foreign key,无法修改删除 ,
    此时有两种解决方法:
    一、先删除引用外键的表,再删除作为外键的表
    二、可以通过设置 FOREIGN_KEY_CHECKS 变量来避免这种情况。

    两种方法可以,但有时,数据结构或者外键引用比较复杂时推荐用第二种方法

    具体步骤:

    1. 设置 SET FOREIGN_KEY_CHECKS=0;
    2. 删除,更新数据,
    3. 恢复外键 SET FOREIGN_KEY_CHECKS=1;
      另:查看当前 FOREIGN_KEY_CHECKS的值 SELECT @@FOREIGN_KEY_CHECKS;

    图示:
    直接删除带有外键的表会报错
    查看默认的 SET FOREIGN_KEY_CHECKS
    在这里插入图片描述
    另外附上,mysql数据表设置外键的一种方式:

    create table class(
        id int unsigned auto_increment primary key not null,
        name varchar(20) not null
    );
    
    create table students(
        id int unsigned auto_increment primary key not null,
        class_id int unsigned,
        foreign key (class_id) references class(id),  #设置外键
        name varchar(20) not null
    );
    
    

    原文链接:https://www.cnblogs.com/fu-yong/p/9776937.html

    展开全文
  • 1.外键约束 取消 SET FOREIGN_KEY_CHECKS=0; 2.恢复外键约束 SET FOREIGN_KEY_CHECKS=1;... tmp_% 为表的前缀 ,删除tmp_开头的表 SELECT CONCAT( 'DROP TABLE ', GROUP_CONCAT(table_name) , ...

    1.外键约束 取消

    SET FOREIGN_KEY_CHECKS=0;

    2.恢复外键约束

    SET FOREIGN_KEY_CHECKS=1;
    3.删除相同前缀

      slowquery为你要删除数据表所在的数据 库名

      tmp_%  为表的前缀 ,删除tmp_ 开头的表


    SELECT CONCAT( 'DROP TABLE ', GROUP_CONCAT(table_name) , ';' ) AS statement FROM information_schema.tables WHERE table_schema = 'slowquery' AND table_name LIKE 'tmp_%';
     

    4.将3的查询结果执行,即可删除数据

    https://blog.csdn.net/wql2014302721/article/details/79563088

    展开全文
  • 删除表的语句是 DROP TABLE Table_2 有些时候会遇到一个中存在外键无法删除。这时加上这个语句就可以成功删除 SET FOREIGN_KEY_CHECKS=0;
  • 如果有外键约束,无法直接用delete from table删除表中数据 这时先执行set FOREIGN_KEY_CHECKS=0; 再执行delete from table
  • mysql删除有外键关联的表数据

    千次阅读 2018-03-02 16:09:02
    手动删除外键约束删除表数据 第二种:(保留外键约束) SET FOREIGN_KEY_CHECKS = 0; TRUNCATE TABLE 表名; SET FOREIGN_KEY_CHECKS = 1;  ------------------------------------------------------...
  • Mysql 删除外键约束表

    2018-03-26 19:42:17
    引言:MySQL 直接删除有外键约束的表时,常常会报下面的错误:或者是:Cannot truncate a table referenced in a foreign key constraint !解决方法:SET FOREIGN_KEY_CHECKS = 0; TRUNCATE table $table_name; ...
  • MySQL 如何删除有外键约束的表数据 今天删除数据库中数据,提示因为设置了foreign key,无法修改删除 可以通过设置FOREIGN_KEY_CHECKS变量来避免这种情况。 SET FOREIGN_KEY_CHECKS=0; 删除,更新数据, 恢复外键 ...
  • MySQL删除具有外键关联的表

    千次阅读 2019-03-11 20:25:01
    MySQL删除表的时候忽略外键约束  删除表不是特别常用,特别是对于存在外键关联的表,删除更得小心。但是在开发过程中,发现Schema设计的问题而且要删除现有的数据库中所有的表来重新创建也是常的事情;另外在...
  • 外键是用来实现参照完整性,不同的外键约束方式将可以使两张紧密结合起来,特别是修改或者删除的级联操作将使得日常维护工作更加轻松。外键主要用来保证数据完整性和一致性两个必须是InnoDB,MyISAM...
  • 其实如果想删除所有可以直接如下操作: 在navicat中直接选中所有...MySQL删除所有表的外键约束、禁用外键约束 2017年10月27日 00:11:34 李阿飞 阅读数:4271 版权声明:本文为博主原创文章,未经博主允...
  • mysql删除有外键关联数据数据

    千次阅读 2020-02-26 16:06:38
    有外键约束的数据是不能直接删除的,比如在个人测试的时候,数据导入错误等情况 解决: 一: 登录和切换数据库 mysql -uroot -p use '你的数据库' 二: 查看外键情况 mysql> select @@foreign_key_checks; +---...
  • Mysql删除外键约束

    2018-05-03 19:23:36
    通常关联的两张表,...note就是外键约束的表 show create table note; 执行后会出现类似下面的代码, 这里的note_ibfk_1、note_ibfk_2.就是约束的外键名称。 CONSTRAINT `note_ibfk_1` FOREIGN KEY (`u...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 463
精华内容 185
关键字:

mysql删除有外键约束的表

mysql 订阅