oracle级联删除批量修改

Dream_1986 2012-02-28 10:09:40
hello,有没有谁写过这样的SQL就是表中一些外键关联是级联删除修改的语句,就是现在有一批表中有一些级联删除是cascade 的删除规则的想改为Set null。我知道在oracle中建立好的constraint 必须先alter table drop contraint con_name;然后再重新add constraint!
但是想要一个批量操作的SQL,有没有谁写过这样的批量操作的语句?
谢谢~~~
...全文
149 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dream_1986 2012-02-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jdsnhan 的回复:]

BEGIN
for c in (select 'alter table '||table_name||' disable constraint '||constraint_name||' ' as v_sql from user_constraints where CONSTRAINT_TYPE='R')
loop
begin
execute immediate c.v_sql;
……
[/Quote]谢谢~~此处只能将这些外键P量置为不可用~~
Dream_1986 2012-02-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bin3509 的回复:]

我表示看不明白。
[/Quote]就是想把很多个表中的N多个级联删除是cascade的外键,改为set null 的外键
不想一个一个删除再新增,希望有个批量操作的功能
Dream_1986 2012-02-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 luiseradl 的回复:]

写存储过程,批量处理罢。
可以做到,没问题,需要动态SQL执行的知识。
[/Quote]恩,想到是用动态SQL,不知道该怎么写
我心飞翔 2012-02-28
  • 打赏
  • 举报
回复
写存储过程,批量处理罢。
可以做到,没问题,需要动态SQL执行的知识。
ICE-word 2012-02-28
  • 打赏
  • 举报
回复
我表示看不明白。
jdsnhan 2012-02-28
  • 打赏
  • 举报
回复
BEGIN
for c in (select 'alter table '||table_name||' disable constraint '||constraint_name||' ' as v_sql from user_constraints where CONSTRAINT_TYPE='R')
loop
begin
execute immediate c.v_sql;
exception when others then
dbms_output.put_line(sqlerrm);
end;
end loop;
end;

3,494

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧