(Этот ответ предполагает, что вы намерены удалить все строки этих таблиц, а не только выборку.)
Я тоже должен был это сделать, но как часть набора тестов. Я нашел ответ, предложенный в другом месте на SO . Используйте TRUNCATE TABLE следующим образом:
TRUNCATE TABLE <list-of-table-names> [RESTART IDENTITY] [CASCADE];
Следующее быстро удаляет все строки из таблиц table1
, table2
и table3
, при условии, что нет ссылок на строки этих таблиц из не перечисленных таблиц:
TRUNCATE TABLE table1, table2, table3;
Пока ссылки находятся между перечисленными таблицами, PostgreSQL удалит все строки, не заботясь о ссылочной целостности. Если таблица, отличная от перечисленных, ссылается на строку одной из этих таблиц, запрос не будет выполнен.
Однако вы можете квалифицировать запрос, чтобы он также обрезал все таблицы со ссылками на перечисленные таблицы (хотя я не пробовал этого):
TRUNCATE TABLE table1, table2, table3 CASCADE;
По умолчанию последовательности этих таблиц не перезапускают нумерацию. Новые строки будут продолжены со следующего номера последовательности. Для перезапуска порядковой нумерации:
TRUNCATE TABLE table1, table2, table3 RESTART IDENTITY;