Может быть выполнено с помощью одной команды, которая работает быстрее - в случае, если это повторяющаяся задача.
Добавьте IF EXISTS
, если существование каких-либо таблиц является неопределенным.Таким образом, мы сохраняем дополнительную поездку в системные каталоги (information_schema.tables
или pg_catalog.pg_tables
).
И вы можете добавить CASCADE
:
DO
$do$
BEGIN
-- child safety device: quote RAISE instead of EXECUTE to prime the bomb
-- EXECUTE (
RAISE NOTICE '%', (
SELECT 'DROP TABLE IF EXISTS'
|| string_agg('table_' || chr(ascii('a') + g) , ', ')
|| ' CASCADE;'
FROM generate_series(0,13) g
);
END
$do$;
Создает команду вида:
DROP TABLE IF EXISTS table_a, table_b, ... , table_n CASCADE;
Использование generate_series()
для генерации запрошенных имен таблиц.Подробнее здесь: