воскресенье, 5 июня 2011 г.

Удаление связанных таблиц ORACLE

При необходимсоти массового удаления таблиц возникают проблемы из-за многочисленных связей между ними.
Данный скрипт решает эту проблему, удаляя сначала внешние ключи, уникальные индексы и чеккеры, затем первичные ключи, а затем и сами таблицы.

set serveroutput on;
begin
  for i in (select * from all_constraints where table_name in ('t1', 't2') and constraint_type in ('U','C','R')) loop
    dbms_output.put_line('alter table ' || i.table_name || ' drop constraint ' || i.constraint_name || ';');
  end loop;

  for i in (select * from all_constraints where table_name in ('t1', 't2') and constraint_type = 'P') loop
    dbms_output.put_line('alter table ' || i.table_name || ' drop constraint ' || i.constraint_name || ';');
  end loop;
  
  for i in (select * from all_tables where table_name in ('t1', 't2') loop
    dbms_output.put_line('drop table ' || i.table_name || ';');
  end loop;
end;

Комментариев нет:

Отправить комментарий