批量执行语句之——禁用所有表的外键

在转移数据库,进行数据导入的时候,遇到一件麻烦事,就是表间外键约束的存在,导致insert频频报错,批量执行sql语句又是顺序执行,没办法我只好手动输入。
      然后输入到一半灵光一闪,为什么不先把外键约束全部禁用先呢?

于是我百度到以下资料:

oracle 删除(所有)约束 禁用(所有)约束 启用(所有)约束

(2009-06-17 09:56:32)

执行以下sql生成的语句即可

1

删除所有外键约束

select ‘alter table ‘||table_name||‘ drop constraint ‘||constraint_name||‘;‘ from user_constraints where constraint_type=‘R‘

2

禁用所有外键约束

select ‘alter table ‘||table_name||‘ disable constraint ‘||constraint_name||‘;‘ from user_constraints where constraint_type=‘R‘

3

启用所有外键约束

select ‘alter table ‘||table_name||‘ enable constraint ‘||constraint_name||‘;‘ from user_constraints where constraint_type=‘R‘

在SQL Plus中输入语句后,生成了很多语句,这些语句其实是没执行的,复制下来执行一遍就好了。
然后我们可以根据这个脚本一样的sql语句进行拼装,得到我们需要的语句:
 
禁用所有外键约束:
 select ‘ALTER TABLE "QIANHAI"."‘||table_name||‘"  MODIFY CONSTRAINT  "‘||constraint_name||‘" DISABLE;‘ from user_constraints where constraint_type=‘R‘

启用所有外键约束:
 select ‘ALTER TABLE "QIANHAI"."‘||table_name||‘"  MODIFY CONSTRAINT  "‘||constraint_name||‘" ENABLE;‘ from user_constraints where constraint_type=‘R‘;

时间: 2024-10-11 22:07:31

批量执行语句之——禁用所有表的外键的相关文章

SqlServer禁用启用触发器、外键约束

--禁用指定名称触发器 ALTER TABLE tbname DISABLE TRIGGER trigname --恢复指定名称触发器 ALTER TABLE tbname ENABLE TRIGGER trigname --禁用某个表上的所有触发器 ALTER TABLE tbname DISABLE TRIGGER all --启用某个表上的所有触发器 ALTER TABLE tbname ENABLE TRIGGER all --禁用所有表上的所有触发器exec sp_msforeacht

sql数据库删除表的外键约束(INSERT 语句与 FOREIGN KEY 约束"XXX"冲突。该冲突发生于数据库"XXX",表"XXX", column 'XXX)

使用如下SQL语句查询出表中外键约束名称: 1 select name 2 from sys.foreign_key_columns f join sys.objects o on f.constraint_object_id=o.object_id 3 where f.parent_object_id=object_id('表名') 执行如下SQL语句删除即可. 1 alter table 表名 drop constraint 外键约束名 sql数据库删除表的外键约束(INSERT 语句与 F

父表、子表 主外键关系

ORACLE官方文档介绍: Concurrency Control, Indexes, and Foreign Keys You almost always index foreign keys. The only exception is when the matching unique or primary key is never updated or deleted.(你总是需要对 外键添加索引! 唯一的例外就是:匹配的主键列 或是 唯一列 从不进行更新操作或者 删除操作) Oracle

oracle主从表主外键对应关系

一.首先让我们来了解下什么是主外键? 1.主键:唯一标识数据表中的某一行 1) 一个表中只能有一个主键.如果在其他字段上建立主键,则原来的主键就会取消.在ACCESS中,虽然主键不是必需的,但最好为每个表都设置一个主键. 2)主键的值不可重复,也不可为空(NULL).主关键字是可选的,并且可在 CREATE TABLE 或 ALTER TABLE 语句中定义. 3)主键的创建:在建置新表格时设定主键的方式 MySQL:  CREATE TABLE Customer (SID integer,La

表有外键所以delete报错了,这里有2种办法处理:

表有外键所以delete报错了,这里有2种办法处理: (1)      临时设置外键失效 (2)      删除表涉及到的外键的表的数据 2.外键失效的处理方案 mysql> SET FOREIGN_KEY_CHECKS = 0;  # 临时设置外键失效 Query OK, 0 rows affected (0.00 sec) mysql> mysql> delete from JBPM4_EXECUTION;  #执行删除操作 Query OK, 110 rows affected (

SQLServer 删除所有表的外键约束

DECLARE c1 cursor for select 'alter table ['+ object_name(parent_obj) + '] drop constraint ['+name+']; ' from sysobjects where xtype = 'F'open c1declare @c1 varchar(8000)fetch next from c1 into @c1while(@@fetch_status=0) begin exec(@c1) fetch next fr

mysql为表添加外键完成性约束 报错Can't create table 'sfkbbs.#sql-513_25' (errno: 150)

代码 alter table sfk_son_module add constraint foreign key(father_module_id) references sfk_father_module(id) on delete restrict on update restrict; (constraint 后面可以加上约束名字) 错误原因是之前两张表的id的类型不一样,一个时int,一个时bigint 解决办法时修改表, alter table sfk_father_module mo

MyEclipse数据库教程:表、外键和索引的使用方法

MyEclipse数据库教程:表.外键和索引的使用方法 MyEclipse的数据库资源管理器工具提供了大量的向导和操作,来轻松地创建和删除表.关系和索引.在本教程中,你将学习到: 创建和删除表 创建和删除外键 创建和删除索引 没有MyEclipse?立即下载 1. 创建一个新的索引 创建索引是开发人员重要的性能工具,典型的就是在DBMS上创建一个表的索引键.然而可能在其他领域中经常需要使用ORDER BY或WHERE子句来增强性能.假设您可能在CITY中有很多订购的客户,您可以在该领域中创建索引

mysql查询某张表的外键

mysql和oracle一样也是有数据字典表的,是存在单独的一个库叫INFORMATION_SCHEMA,要查看某张表的外键要从字典表中查找 如mysql查询某张表的外键,可以用下面的方式查询 use INFORMATION_SCHEMA; select TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME,REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME from KEY_COLUMN_USAGE where table_name