`

oracle禁用外键后清空所有表数据

 
阅读更多

declare

  --所有外键约束

  cursor c1 is

    select t.table_name

          ,t.constraint_name

      from user_constraints t

     where t.owner = 'IVM'

       AND T.constraint_type = 'R';

  --所有业务表    

  cursor c2 is

    select table_name

      from user_tables t

     where t.TABLE_NAME not in

           ('INTERVIEWMETHOD', 'MENU', 'ROLE', 'ROLE_MUNU', 'SYSTEMUSER');

  stmt varchar2(4000);

begin

 

  --01-禁用外键约束

  for cc in c1 loop

    BEGIN

      stmt := 'alter table ' || cc.table_name || ' disable constraint ' ||

              cc.constraint_name;

      dbms_output.put_line(stmt);

      execute immediate stmt;

    end;

  end loop;

 

  --02-清空所有业务数据

  for cc in c2 loop

    BEGIN

      stmt := 'TRUNCATE table ' || cc.table_name;

      dbms_output.put_line(stmt);

      execute immediate stmt;

    end;

  end loop;

 

  --03-启用外键约束

  for cc in c1 loop

    BEGIN

      stmt := 'alter table ' || cc.table_name || ' enable constraint ' ||

              cc.constraint_name;

      dbms_output.put_line(stmt);

      execute immediate stmt;

    end;

  end loop;

 

  --异常处理

EXCEPTION

  WHEN OTHERS THEN

    dbms_output.put_line('error ' || stmt || ' sqlerr' || sqlerrm);

    rollback;

end;

 

分享到:
评论

相关推荐

    通过PLSQL的进行oracle数据库导入导出

    2. **约束问题**:存在外键约束和触发器的表在使用DUMP import时,禁用它们变得复杂,可能引发错误,导致数据不完整。 3. **数据恢复**:更新表后,需要将这些表的数据恢复到原始状态,DUMP import无法简单地清空并...

    Oracle关键字(保留字)大全

    - **TRUNCATE**: 清空表中的所有数据,但保留表结构不变。 - **MERGE**: 用于条件性地更新或插入数据行。 - **EXPLAIN PLAN**: 用于分析并报告SQL语句的执行计划。 - **LOCK TABLES**: 锁定表以进行数据更改。 - **...

    导入pde时报表或视图不存在的问题.txt

    - **截断表**:使用“TRUNCATE TABLE”语句可以清空表中的所有数据,但保留表结构。 ### 三、问题解决方案 #### 3.1 检查目标数据库 - **确保目标数据库中存在所有必需的报表和视图**。可以通过查询系统元数据视图...

    oracle基础教程(超详细)

    - **清空表数据同时释放存储空间:** - `TRUNCATE TABLE 表名 RELEASE STORAGE;` - 示例:`TRUNCATE TABLE new_employee RELEASE STORAGE;` **13. 查看表结构** - **查看表的结构:** - `DESCRIBE 表名;` - ...

    oracle教程-总结

    清空表中的所有数据,但保留表结构。 - **清空表**: ```sql TRUNCATE TABLE userInfo_tab; ``` #### 三、视图管理 **1. 创建视图** 视图可以视为存储的查询结果,便于后续访问。 - **语法示例**: ```sql ...

    PLSQL Developer导入导出工具参数说明

    禁用外键约束同样可以加快导入速度。 - **Include Storage**: 是否在 SQL 文件中包含 STORAGE 子句,默认值为 N。这对于保持表空间设置一致非常重要。 - **Include Privileges**: 是否在 SQL 文件中包含权限授予...

    Oracle数据库基本操作详解.doc

    `可以快速清空表中的所有数据而不删除表结构。 2. **复制空表结构**:通过`CREATE TABLE new_table AS SELECT * FROM old_table WHERE 1=2;`命令,可以创建一个新表,其结构与现有表相同但无数据。 3. **复制表(含...

    oracle 经典查询电子书

    - **3.6.2 删除表**:使用`DROP TABLE 表名`删除整个表及其所有数据。 **3.7 维护外部表** - **3.7.1 创建外部表**:用于直接访问文件系统中的数据文件。 - **3.7.2 更改、删除外部表**:可以修改外部表的定义或...

    02_Oracle_Royallin.pdf

    ` 快速清空表中的所有数据。 - **4.7.2 删除表:** 如 `DROP TABLE table_name;` 完全删除表及其数据。 **4.8 维护外部表** - **4.8.1 创建外部表:** 如 `CREATE TABLE table_name (columns) ORGANIZATION ...

    oracle串讲

    4. **TRUNCATE**: 清空表中的所有数据,但保留表结构。 - **基本语法**:`TRUNCATE TABLE table_name`。该操作比`DELETE`语句更快且不记录日志。 #### 二、数据操纵语言 (DML) 数据操纵语言(Data Manipulation ...

    学习笔记之Oracle教程(免费).pdf--超详细

    - **其他DDL操作**:包括DROP TABLE、TRUNCATE TABLE等用于删除或清空表的操作。 #### DML (数据操纵语言) - **插入数据**:使用INSERT语句添加新记录。 - **更新数据**:利用UPDATE语句来修改已有记录。 - **删除...

    oracle常用命令

    `:快速清空表数据,与DELETE相比,不触发任何约束或触发器,速度更快,但不记录事务日志,不能回滚。 - `ALTER TABLE table_name DISABLE CONSTRAINT constraint_name;`:暂时禁用约束,用于大容量数据导入或临时...

    数据库整套开发技术支持

    - **截断表**:使用`TRUNCATE TABLE`语句快速清空表内容。 #### 五、约束 - **数据完整性**: - **实体完整性**:确保每个表有一个主键。 - **参照完整性**:维护表之间的关系,确保引用完整性。 - **域完整性*...

Global site tag (gtag.js) - Google Analytics