跳到主要内容

删除所有数据库表

-- 1. 先删除所有外键约束
DO $$ DECLARE
r RECORD;
BEGIN
FOR r IN (
SELECT constraint_name, table_name
FROM information_schema.table_constraints
WHERE constraint_type = 'FOREIGN KEY'
AND table_schema = current_schema()
) LOOP
EXECUTE 'ALTER TABLE ' || quote_ident(r.table_name) || ' DROP CONSTRAINT ' || quote_ident(r.constraint_name);
END LOOP;
END $$;

-- 2. 删除所有表
DO $$ DECLARE
r RECORD;
BEGIN
FOR r IN (SELECT tablename FROM pg_tables WHERE schemaname = current_schema()) LOOP
EXECUTE 'DROP TABLE ' || quote_ident(r.tablename) || ' CASCADE';
END LOOP;
END $$;

-- 3. 删除所有序列
DO $$ DECLARE
r RECORD;
BEGIN
FOR r IN (SELECT sequence_name FROM information_schema.sequences WHERE sequence_schema = current_schema()) LOOP
EXECUTE 'DROP SEQUENCE ' || quote_ident(r.sequence_name) || ' CASCADE';
END LOOP;
END $$;