是否有可能在PostgreSQL中使用单个命令删除所有表的所有行(而不破坏数据库)或级联删除?
如果不行,那么我该如何重置我的测试数据库?
是否有可能在PostgreSQL中使用单个命令删除所有表的所有行(而不破坏数据库)或级联删除?
如果不行,那么我该如何重置我的测试数据库?
CREATE OR REPLACE FUNCTION truncate_all() RETURNS void LANGUAGE plpgsql AS
$$
DECLARE
row record;
query text;
BEGIN
query := 'SELECT table_schema, table_name FROM information_schema.tables WHERE table_schema NOT IN(''pg_catalog'', ''information_schema'') AND table_type = ''BASE TABLE''';
FOR row IN EXECUTE query LOOP
EXECUTE 'TRUNCATE ' || quote_ident(row.table_schema) || '.' || quote_ident(row.table_name) || ' CASCADE;';
END LOOP;
RETURN;
END;
$$;
-- execute:
SELECT truncate_all();