PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak upuścić wiele (ale nie wszystkie) stołów za jednym zamachem?

Przede wszystkim możesz usunąć wiele tabel w jednym oświadczenie :

DROP TABLE mystuff_table_1, mystuff_table_2, mystuff_table_3 CASCADE;

Następnie możesz umieścić wszystkie te tabele w osobnym schemacie . Dodaj ten schemat do domyślnego search_path użytkowników, więc wszystko jest przejrzyste.

Wszystko czego potrzebujesz to:

DROP SCHEMA foo CASCADE;

Jeśli to nie wystarczy, utwórz funkcję, która wykonuje polecenie.
Statyczna funkcja SQL :

CREATE OR REPLACE FUNCTION f_delete12()  RETURNS void AS
$func$
DROP TABLE mystuff_table_1, mystuff_table_2, mystuff_table_3, ... CASCADE;
$func$  LANGUAGE sql VOLATILE;

Lub dynamiczna funkcja PL/pgSQL :

CREATE OR REPLACE FUNCTION f_delete12()
  RETURNS void AS
$func$
BEGIN
EXECUTE (
   SELECT 'DROP TABLE ' || string_agg('mystuff_table_' || g, ', ')
          || ' CASCADE'
   FROM generate_series(1,12) g  -- numbers 1 to 12
   );
END
$func$  LANGUAGE plpgsql VOLATILE;

Zadzwoń:

SELECT f_delete12();

Aby uzyskać jeszcze bardziej dynamiczną wypowiedź:
Jak usunąć wszystkie tabele w psql (interaktywny terminal PostgreSQL), które zaczynają się od wspólnego słowa?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Skrypt Bash do instalacji PostgreSQL - nie działa

  2. Zapisz wynik zapytania PostgreSQL w zmiennej Shell lub PostgreSQL

  3. Koszt bezpłatnej reklamy PostgreSQL

  4. Jak używać zmiennych w prostym skrypcie PostgreSQL?

  5. Jak połączyć się ze zdalną bazą danych PostgreSQL przez SSL za pomocą Pythona?