4 октября 2011 г.

Удаление всех таблиц из БД

Иногда возникает необходимость удалить все таблицы. Конечно, проще удалить пользователя базы и создать его заново. Это самый надёжный вариант, который точно удалит весь мусор, который может остаться в базе, однако не всегда на это есть пермиссии. Но можно воспользоваться этим скриптом:
BEGIN
  FOR i IN (SELECT table_name FROM user_tables)
    LOOP
      EXECUTE IMMEDIATE('DROP TABLE ' || user || '.' || i.table_name || ' CASCADE CONSTRAINTS');
    END LOOP;
END;
А тут еще 2 полезных скрипта:

Первый:
BEGIN
  FOR i IN (SELECT trigger_name FROM user_triggers)
    LOOP
      EXECUTE IMMEDIATE('DROP TRIGGER ' || user || '.' || i.trigger_name);
    END LOOP;
END;

И второй:
BEGIN
  FOR i IN (SELECT sequence_name FROM user_sequences)
    LOOP
      EXECUTE IMMEDIATE('DROP SEQUENCE ' || user || '.' || i.sequence_name);
    END LOOP;
END;

Думаю ясно что они делают. Будьте внимательны:если вы удалите сначала таблицы, то триггеры будут переименованы и скрипт удаления триггеров может не отработать. Так что удаляйте сначала триггеры. 

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

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

Примечание. Отправлять комментарии могут только участники этого блога.