PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana cara menjatuhkan banyak (tetapi tidak semua) tabel dalam satu gerakan?

Pertama-tama, Anda dapat menghapus banyak tabel dalam tunggal pernyataan :

DROP TABLE mystuff_table_1, mystuff_table_2, mystuff_table_3 CASCADE;

Selanjutnya, Anda dapat menempatkan semua tabel tersebut ke dalam skema terpisah . Tambahkan skema itu ke default search_path pengguna Anda, jadi semuanya transparan.

Maka yang Anda butuhkan hanyalah:

DROP SCHEMA foo CASCADE;

Jika itu tidak cukup singkat, buat fungsi yang menjalankan perintah.
A fungsi SQL statis :

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;

Atau fungsi PL/pgSQL dinamis :

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;

Telepon:

SELECT f_delete12();

Untuk pernyataan yang lebih dinamis:
Bagaimana cara menghapus semua tabel di psql (terminal interaktif PostgreSQL) yang dimulai dengan kata umum?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana menemukan semua kombinasi (subset) dari berbagai ukuran array di postgresql

  2. Mendapatkan NoSuchMethodError:javax.persistence.Table.indexes() saat melakukan kueri JPA

  3. Rails + PostgreSQL -Menggunakan Suka

  4. Memesan hasil kueri dengan string numerik di Django (backend postgres)

  5. Antrian penguncian yang optimis