PLSQL 禁用所有约束,启用约束,索引,触发器等
--禁用外键和触发器
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;
最新文章
- Ubuntu14.04更新源、安装chrome/搜狗输入法
- Linux 下编译openjdk
- 数位dp总结
- js事件对象--DOM中的事件对象/IE中的事件对象/跨浏览器的事件对象
- Using Nini .NET Configuration Library
- 从数据库中导出.csv文件
- java监听器之实现在线人数显示
- 简化equals()方法的重写
- python->;解析xml文件
- python接口自动化测试八:更新Cookies、session保持会话
- 详解kubeadm生成的证书(转)
- 运行程序,解读this指向---case1
- 微服务平台(Micro Service Platform : MSP)旨在提供一个集开发、测试、运维于一体的开发者专属平台,让开发者能快速构建或使用微服务,让开发更简单,让运维更高效。
- vue 动态绑定背景图片
- 【bzoj1706】[usaco2007 Nov]relays 奶牛接力跑
- 技术笔记2 jetty jboss
- 注冊成为Windows Phone开发人员而且解锁Windows Phone 8.1手机
- vsftpd下错误之:500 OOPS
- linux系统中关于shell变量$*与$@的区别
- vdp配置
热门文章
- C++ Memory System Part2: 自定义new和delete
- http状态代码含义收藏
- PCA 降维算法详解 以及代码示例
- $smarty->;assign('','')查询结果发送给模板
- scss-@while指令
- Android开发之EditText利用键盘跳转到下一个输入框
- SQL Server日期格式化
- canvas玩转微信红包
- 菜鸟学习Spring——SpringMVC注解版在服务器端获取Json字符串并解析
- php json_encode 中文乱码解决方法