PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm thế nào để thả nhiều (nhưng không phải tất cả) bảng trong một lần rơi?

Trước hết, bạn có thể xóa nhiều bảng trong một tuyên bố :

DROP TABLE mystuff_table_1, mystuff_table_2, mystuff_table_3 CASCADE;

Tiếp theo, bạn có thể đặt tất cả các bảng đó vào một lược đồ riêng biệt . Thêm giản đồ đó vào mặc định search_path của (các) người dùng của bạn, vì vậy tất cả đều minh bạch.

Sau đó, tất cả những gì bạn cần là:

DROP SCHEMA foo CASCADE;

Nếu chưa đủ ngắn, hãy tạo một hàm thực thi lệnh.
A Hàm SQL tĩnh :

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;

Hoặc hàm PL / pgSQL động :

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;

Gọi:

SELECT f_delete12();

Đối với một câu lệnh động hơn nữa:
Làm cách nào để loại bỏ tất cả các bảng trong psql (thiết bị đầu cuối tương tác PostgreSQL) bắt đầu bằng một từ thông dụng?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách Extract () hoạt động trong PostgreSQL

  2. chuyển đổi bất kỳ chuỗi ngày nào thành dấu thời gian không có múi giờ

  3. Postgres THAM GIA với không trung thực

  4. Kiểm tra xem cột bảng có tồn tại trong cơ sở dữ liệu hay không bằng cách sử dụng SQLAlchemy và Alembic

  5. NLog đến kết nối PostgreSQL