精华内容
下载资源
问答
  • 其实如果想删除所有可以直接如下操作: 在navicat中直接选中所有...MySQL删除所有外键约束、禁用外键约束 2017年10月27日 00:11:34 李阿飞 阅读数:4271 版权声明:本文为博主原创文章,未经博主允...

    其实如果想删除所有表可以直接如下操作:

    在navicat中直接选中所有表,然后右键删除表即可,会有提示,一路确定,就会先删掉没有外键的表和字表,只要一路确定,删几批就把表都删完了,并不算太麻烦。

     

    转:

    MySQL删除所有表的外键约束、禁用外键约束

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/junlovejava/article/details/78360253

     数据库的外键虽然能保证数据数据一致性和完整性,但是也一定程度地影响了数据更新的性能。在开发中,我们使用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;

    转载于:https://www.cnblogs.com/libin6505/p/10375865.html

    展开全文
  • #在外键约束的参数中有三种模式:默认无配置NO ACTION ,级联删除 ON DELETE CASCADE,父表删除的相关数据,子表外键约束列对应的数据置为null #如何查询外键约束类型是什么参数 #直接删除父表的记录测试: ...

    判断子表外键约束参数类型

     

     

    前言:在存在主外键约束的父子表关系中,删除父表的数据,子表的数据需要首先删除,否则报错

    #在外键约束的参数中有三种模式:默认无配置NO ACTION ,级联删除 ON DELETE CASCADE,父表删除的相关数据,子表外键约束列对应的数据置为null

     

    #如何查询外键约束类型是什么参数

     

    #直接删除父表的记录测试:

    delete scott.dept where deptno=20

    *

    ERROR at line 1:

    ORA-02292: integrity constraint (SCOTT.FK_DEPTNO) violated - child record found

    #子表还存在数据,且外键约束类型为默认,因此删除父表数据,需要手工提取删除子表的相关记录

     

    #查询子表的外键约束类型

    SCOTT >  select OWNER,CONSTRAINT_NAME,CONSTRAINT_TYPE,TABLE_NAME,R_OWNER,R_CONSTRAINT_NAME,DELETE_RULE from USER_CONSTRAINTS where CONSTRAINT_TYPE='R'

     

    OWNER      CONSTRAINT CONSTRAINT TABLE_NAME R_OWNER    R_CONSTRAI DELETE_RUL

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

    SCOTT      FK_DEPTNO  R          EMP        SCOTT      PK_DEPT    NO ACTION

     

    #添加一个外键约束:为 on delete cascade参数

    SCOTT > alter table emp add constraint fk_deptno foreign key(deptno)  references dept(deptno) on delete cascade;

     

    #查询

    SCOTT > select OWNER,CONSTRAINT_NAME,CONSTRAINT_TYPE,TABLE_NAME,R_OWNER,R_CONSTRAINT_NAME,DELETE_RULE from USER_CONSTRAINTS where CONSTRAINT_TYPE='R';

     

    OWNER      CONSTRAINT CONSTRAINT TABLE_NAME R_OWNER    R_CONSTRAI DELETE_RUL

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

    SCOTT      FK_DEPTNO  R          EMP        SCOTT      PK_DEPT    CASCADE

    #对比:从视图: user_constraints视图中的 delete_rule列可以看出外键约束的参数类型

     

    #测试 on delete set null参数现象:

    SYS > create table hr.emp as select * from scott.emp;

    SYS > grant references on  scott.dept to hr;

     

    SYS > alter table hr.emp add constraint fk_deptno foreign key (deptno) references scott.dept(deptno) novalidate;

    SYS > alter table hr.emp drop constraint fk_deptno;

     

    SYS > alter table hr.emp add constraint fk_deptno foreign key (deptno) references scott.dept(deptno) on delete set null;

    SYS > delete scott.dept where deptno=20;

    1 row deleted.

    SYS > select * from hr.emp where deptno=20;

    no rows selected

    SYS >  select * from hr.emp;

         EMPNO ENAME      JOB       MGR HIREDATE          SAL      COMM    DEPTNO

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

          7900 JAMES      CLERK       7698 1981-12-03 00:00:00    950                    30

          7902 FORD       ANALYST    7566 1981-12-03 00:00:00    5000

     

    #外键约束参数,会导致对父表delete操作需要考虑子表的数据,了解外键约束三种参数,默认不处理,delete级联删除子表数据,set null对子表复合的外键列置为Null,可以有助于数据处理的思考

    转载于:https://www.cnblogs.com/lvcha001/p/9196065.html

    展开全文
  • 删除表外键约束

    2020-05-13 19:04:03
    删除表外键约束 我们曾在第一章中讲过外键的作用,以及如何创建一个的外键。建立了外键我们就建立起了两张的关联关系,那如果我想删除呢?为了确保数据库的正确性,我们必须先解除两个之间的关联关系,...

    删除表的外键约束
    我们曾在第一章中讲过外键的作用,以及如何创建一个表的外键。建立了外键我们就建立起了两张表的关联关系,那如果我想删除主表呢?为了确保数据库的正确性,我们必须先解除两个表之间的关联关系,那就是删除外键约束啦!让我们先来看看删除外键约束的语法规则。

    语法规则为: ALTER TABLE 表名 DROP FOREIGN KEY 外键约束名; 。
    我们先建立了一个主表country,
    然后建立一个有外键约束的子表Mall_products2,让它的键country_id作为外键关联到country的主键id。SQL语句如下:

    CREATE TABLE Mall_products2
    (
    id INT(11) PRIMARY KEY,
    country_name VARCHAR(20) NOT NULL,
    country_id INT(11) NOT NULL,
    CONSTRAINT prod_country FOREIGN KEY(country_id) REFERENCES country(id)
    )
    上述语句成功执行后,在表Mall_products2上添加了名称为prod_country的外键约束,外键名称为prod_country,依赖于表country的主键id,从下图中可以看到,已经成功添加了表的外键:

    下面开始删除外键约束,语句如下:
    ALTER TABLE Mall_products2 DROP FOREIGN KEY prod_country;
    我们可以看到,FOREIGN KEY不见了,外键约束删除成功!

    展开全文
  • 如何删除表外键约束

    千次阅读 2020-08-02 14:43:16
    删除表外键约束 我们曾在第一章中讲过外键的作用,以及如何创建一个的外键。建立了外键我们就建立起了两张的关联关系,那如果我想删除呢?为了确保数据库的正确性,我们必须先解除两个之间的关联关系,...

    时间煮雨
    @R星校长

    删除表的外键约束

    我们曾在第一章中讲过外键的作用,以及如何创建一个表的外键。建立了外键我们就建立起了两张表的关联关系,那如果我想删除主表呢?为了确保数据库的正确性,我们必须先解除两个表之间的关联关系,那就是删除外键约束啦!让我们先来看看删除外键约束的语法规则。

    语法规则为: ALTER TABLE 表名 DROP FOREIGN KEY 外键约束名; 。
    举个例子: 我们先建立了一个主表country,表结构如下图所示:

    1
    然后建立一个有外键约束的子表Mall_products2,让它的键country_id作为外键关联到country的主键idSQL语句如下:

    CREATE TABLE Mall_products2
    (
    id INT(11) PRIMARY KEY,
    country_name VARCHAR(20) NOT NULL,
    country_id INT(11) NOT NULL,
    CONSTRAINT prod_country FOREIGN KEY(country_id) REFERENCES country(id)
    )
    

    上述语句成功执行后,在表Mall_products2上添加了名称为prod_country的外键约束,外键名称为prod_country,依赖于表country的主键id,从下图中可以看到,已经成功添加了表的外键:
    2
    Mall_products2表结构如下图所示:
    3
    下面开始删除外键约束,语句如下:
    ALTER TABLE Mall_products2 DROP FOREIGN KEY prod_country;

    使用SHOW CREATE TABLE查看表 Mall_products2 的结构,结果如下:
    4
    我们可以看到,FOREIGN KEY不见了,外键约束删除成功!

    接下来你们可以自行体验一下了!   在这里插入图片描述

    展开全文
  • 主要介绍了MySQL删除外键约束数据方法介绍,还是非常不错的,这里给大家分享下,需要的朋友可以参考。
  • MySQL删除表时忽略外键约束如何实现方法例子分享给大家,本文是告诉大家关于MySQL删除表的时候忽略外键约束的简单实现,有兴趣的朋友赶紧来了解一下吧。删除表并不常见,特别是对于具有外键关联的。但是,在开发...
  • 删除一张表的时候 会提示到已查询到子记录,这是因为这个表被其他表外键约束 执行下面语句 就能知道被那张表外键约束 SELECT * FROM user_constraints t WHERE t.CONSTRAINT_TYPE = 'R' and t.constraint_...
  • oracle 删除外键约束 禁用约束 启用约束oracle 删除外键约束 禁用约束 启用约束 执行以下sql...备忘:MySQL中修改中某列的数据类型、删除外键约束-- MySQL中修改中某列的数据类型 ALTER TABLE [COLUMN] 表名 M...
  • 删除外键约束的数据

    千次阅读 2019-03-12 17:20:23
    方案一:先删除限制表删除的关联中对应的所有数据,在删除表的数据方案二:先取消外键约束,再删除表的数据,最后恢复外键约束 SET FOREIGN_KEY_CHECKS = 0; 删除操作; SET FOREIGN_KEY_CHECKS = 1; ....
  • 添加主键约束 直接在创建的时候添加主键...当主键已经存在,直接在创建外键的时候添加外键约束 create table book ( book_id int primary key, title nvarchar(128), description nvarchar(512), published
  • SQL Server查询外键约束删除外键约束: 'WC_User'是表名 exec sp_helpconstraint 'WC_User' select name  from sys.foreign_key_columns f join sys.objects o on f.constraint_object_id=o.object_id ...
  • 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...
  • MySQL 如何删除外键约束数据 今天删除数据库中数据,提示因为设置了foreign key,无法修改删除 可以通过设置FOREIGN_KEY_CHECKS变量来避免这种情况。 SET FOREIGN_KEY_CHECKS=0; 删除,更新数据, 恢复外键 ...
  • 用于查询某个数据库下所有外键约束情况,以便统一分析外键约束是否合理;主要查询出外键的,是否级联删除,级联更新,强制外键约束,强制复制约束始终状态。如想使用别的状态,请自行添加。下载的童鞋别下载错了...
  • 外键约束

    2021-01-05 22:33:40
    在新中添加外键约束语法: constraint 外键约束名称 foreign key(外键的字段名称) references 主表名(主键字段名) 在已有中添加外键约束:alter table 从表表名 add constraints 外键约束名称 foreign key...
  • 删除外键约束

    千次阅读 2019-06-05 10:17:26
    删除外键约束::写了这句就可以删除外键约束了 alter table sys_targetprimecostdetail drop foreign key FK_Reference_106 可以查看到其他里面用到这张表的主键当外键在那张表的名字 Select * from ...
  • 假如有主 test_main 与 子 test_subSQL> -- 创建外键(默认选项)SQL> ALTER TABLE test_sub ADD CONSTRAINT main_id_cons FOREIGN KEY (main_id) ...删除外键约束ALTER TABLE test_sub DROP C...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 79,554
精华内容 31,821
关键字:

如何删除表的外键约束