это можно либо удалить все строки из всех таблиц с помощью одной команды в Postgres
Вы правы, ответ НИКАКОГО
Вы можете определить каскадные внешние ключи, которые будут удалять все ссылочные строки, если «родительский» удаляется. Но это атрибут внешнего ключа, который вы не можете указать с помощью оператора DELETE
если нет - ничего себе.
Что это должно означать?
С другой мыслью: чего вы пытаетесь достичь?
У меня есть подозрение, что вы пытаетесь «перезагрузить», например. тестовую базу данных. В этом случае подход PostgreSQL будет:
- Создать базу данных, содержащую все (таблицы, представления, индексы и т.д.), нужно в новой базе данных (назовем ее, например my_template)
- Чтобы сбросить текущее Test- DB, сделать
DROP DATABASE testdb
, а затем повторно создать тестовую базу данных с помощью CREATE DATABASE testdb TEMPLATE my_template
вновь созданный TestDB будет иметь все таблицы, определенные в my_template. Это, вероятно, лот быстрее, чем удаление всех строк.
Вы правы, это именно то, что я пытался сделать, и я был расстроен тем, что в postgres не было простого способа быстро очистить данные. Я создам шаблон - спасибо за помощь. – AP257
Как вы, кажется, ожидаете, что оператор типа «УДАЛИТЬ ВСЕ ОТ ВСЕ» мне интересно, почему? Никакой базы данных, которую я знаю, не поддерживает. –
Ну, мне бы очень понравился DELETE CASCADE. В отсутствие этого DELETE all FROM все будет приемлемой заменой. Но не иметь либо немного боли! – AP257