本文主要是介绍【分享备忘录】Postgresql/pgsql 根据规则,批量联级删除多张表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
来源:Chatgpt
测试调试:我
先上SQL语句如下:
联级删除单表
DROP TABLE IF EXISTS 表名 CASCADE
批量删除整张表
DO $$
DECLARE current_table_name text;
BEGIN-- 获取所有以 'bgd_' 开头的表名FOR current_table_name IN SELECT table_name FROM information_schema.tables WHERE table_name LIKE 'bgd\_%' ESCAPE '\'LOOP-- 构建并执行删除表的语句EXECUTE 'DELETE FROM ' || current_table_name || ' CASCADE';END LOOP;
END $$;
批量删除表数据
DO $$
DECLARE current_table_name text;
BEGIN-- 获取所有以 'bgd_' 开头的表名FOR current_table_name IN SELECT table_name FROM information_schema.tables WHERE table_name LIKE 'bgd\_%' ESCAPE '\'LOOP-- 构建并执行删除表的语句EXECUTE 'DROP TABLE IF EXISTS ' || current_table_name || ' CASCADE';END LOOP;
END $$;
使用注意事项:
- 这个 SQL 脚本使用了 PL/pgSQL 语法,通过查询 information_schema.tables 获取所有以 ‘bgd_’ 开头的表名,并使用 FOR 循环和 EXECUTE 动态执行联级删除语句。
- 这里使用的是 DROP TABLE 语句是会删除整张表, DELETE FROM则是清空表的数据
- 请确保在执行之前备份重要数据,并谨慎使用这样的操作。
- 可以根据表名进行匹配和查询,比如我这边的需求就是删除
获取所有以 'bgd_' 开头的表名
这篇关于【分享备忘录】Postgresql/pgsql 根据规则,批量联级删除多张表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!