在開發或測試時,我們常常需要「清空整個資料庫」。與其一張張刪,不如用這段 SQL 一次搞定:
DO
$$
DECLARE
r RECORD;
BEGIN
FOR r IN (SELECT tablename FROM pg_tables WHERE schemaname = 'public')
LOOP
EXECUTE 'DROP TABLE IF EXISTS public.' || quote_ident(r.tablename) || ' CASCADE';
END LOOP;
END;
$$;
這段程式會自動找出 public schema 下的所有資料表,並逐一執行 DROP TABLE ... CASCADE,安全又乾淨。
- ✅ 自動化:不需手動列出表名。
- ✅ 安全:使用
IF EXISTS 與 quote_ident(),避免錯誤。
- ✅ 高效率:幾行程式就能重置整個資料庫。
非常適合用於開發、測試或初始化環境時快速清空資料庫。