--禁用外键和触发器

SET SERVEROUTPUT ON SIZE 50000
BEGIN
for c in (select 'ALTER TABLE '||TABLE_NAME||' DISABLE CONSTRAINT '||constraint_name||' ' as v_sql from user_constraints where CONSTRAINT_TYPE='R' or CONSTRAINT_TYPE='C') loop
DBMS_OUTPUT.PUT_LINE(C.V_SQL);
begin
EXECUTE IMMEDIATE c.v_sql;
exception when others then
dbms_output.put_line(sqlerrm);
end;
end loop;
for c in (select 'ALTER TABLE '||TNAME||' DISABLE ALL TRIGGERS ' AS v_sql from tab where tabtype='TABLE') loop
dbms_output.put_line(c.v_sql);
begin
execute immediate c.v_sql;
exception when others then
dbms_output.put_line(sqlerrm);
end;
end loop;
end;

--禁用索引

SET SERVEROUTPUT ON SIZE 50000
BEGIN
for c in (select 'ALTER INDEX ' ||index_name || ' unusable' AS v_sql
from user_indexes where table_owner='DBO_PWCDB' and index_type='NORMAL' and uniqueness='NONUNIQUE') loop
dbms_output.put_line(c.v_sql);
begin
execute immediate c.v_sql;
exception when others then
dbms_output.put_line(sqlerrm);
end;
end loop;
end;

--启用序列及触发器

create or replace procedure create_sequences
is
v_sql varchar2(4000);--动态sql语句
v_sequence SYS_REFCURSOR; --定义游标变量
v_row sequence_table%rowtype;--定义行级变量
v_next_num  number(13);
v_max_num   number(13);
v_count number(10);
begin
    v_count:=0;
     --读取序列字典表
    open v_sequence for select * from sequence_table;
    loop
     v_count:=v_count+1;
     fetch v_sequence into v_row;
     exit when v_sequence%notfound;
     --查询表中主键的最大值
     v_sql := 'select max(' || v_row.primaryID || ') from ' || v_row.table_name;
     execute immediate v_sql into v_max_num;
     if (v_max_num is not null) then
       v_next_num := v_max_num + 1;
       --重新创建序列
       v_sql := 'create sequence ' || v_row.sequence_name || ' start with '|| v_next_num ||' increment by 1 nomaxvalue nocache';
       execute immediate v_sql;
       dbms_output.put_line(v_sql);
     end if;
    if (v_max_num is null) then
       v_max_num := 0;
       v_next_num := v_max_num + 1;
       --重新创建序列
       v_sql := 'create sequence ' || v_row.sequence_name || ' start with '|| v_next_num ||' increment by 1 nomaxvalue nocache';
       execute immediate v_sql;
       dbms_output.put_line(v_sql);
     end if;
    end loop;
    close v_sequence;
    dbms_output.put_line('已创建'||v_count||'个序列!');
end;

begin
     create_sequences;
end;

-- 启用外键

SET SERVEROUTPUT ON SIZE 50000
begin
for c in (select 'ALTER TABLE '||TABLE_NAME||' ENABLE CONSTRAINT '||constraint_name||' ' as v_sql from user_constraints where CONSTRAINT_TYPE='R' or CONSTRAINT_TYPE='C') loop
DBMS_OUTPUT.PUT_LINE(C.V_SQL);
begin
EXECUTE IMMEDIATE c.v_sql;
exception when others then
dbms_output.put_line(sqlerrm);
end;
end loop;
end;

最新文章

  1. Ubuntu14.04更新源、安装chrome/搜狗输入法
  2. Linux 下编译openjdk
  3. 数位dp总结
  4. js事件对象--DOM中的事件对象/IE中的事件对象/跨浏览器的事件对象
  5. Using Nini .NET Configuration Library
  6. 从数据库中导出.csv文件
  7. java监听器之实现在线人数显示
  8. 简化equals()方法的重写
  9. python->解析xml文件
  10. python接口自动化测试八:更新Cookies、session保持会话
  11. 详解kubeadm生成的证书(转)
  12. 运行程序,解读this指向---case1
  13. 微服务平台(Micro Service Platform : MSP)旨在提供一个集开发、测试、运维于一体的开发者专属平台,让开发者能快速构建或使用微服务,让开发更简单,让运维更高效。
  14. vue 动态绑定背景图片
  15. 【bzoj1706】[usaco2007 Nov]relays 奶牛接力跑
  16. 技术笔记2 jetty jboss
  17. 注冊成为Windows Phone开发人员而且解锁Windows Phone 8.1手机
  18. vsftpd下错误之:500 OOPS
  19. linux系统中关于shell变量$*与$@的区别
  20. vdp配置

热门文章

  1. C++ Memory System Part2: 自定义new和delete
  2. http状态代码含义收藏
  3. PCA 降维算法详解 以及代码示例
  4. $smarty->assign('','')查询结果发送给模板
  5. scss-@while指令
  6. Android开发之EditText利用键盘跳转到下一个输入框
  7. SQL Server日期格式化
  8. canvas玩转微信红包
  9. 菜鸟学习Spring——SpringMVC注解版在服务器端获取Json字符串并解析
  10. php json_encode 中文乱码解决方法