java—在spring boot应用程序中从多个表中删除数据

frebpwbc  于 2021-06-27  发布在  Java
关注(0)|答案(1)|浏览(501)

我正在开发spring boot应用程序,我们的数据库使用postgresql,在这个数据库中我们有多个模式,在每个模式中我们有多个表,它们之间有多个关系(多对多、多对开和简单关系),我们还有视图和表é多样化的观点。我被要求使用restapi删除特定模式中的所有数据,restapi将模式的名称作为参数。我的问题是:如何删除特定模式的所有表中的所有数据,是否应该在dao中使用命名查询?如何用一个查询同时对所有表执行该操作?
我的第二个问题:我应该删除视图和mat中的数据吗é多元化的观点?类似于从表中删除吗?

zqry0prt

zqry0prt1#

可以使用本机sql语句删除指定架构中的所有数据。从指定的postgresql架构中删除所有表中所有数据的语句如下所示:

DO $$
DECLARE _tablename TEXT;
BEGIN
    FOR _tablename IN 
        SELECT tablename
        FROM pg_catalog.pg_tables
        WHERE schemaname = :your_specified_schema
    LOOP
        EXECUTE format('TRUNCATE public.%I CASCADE;', _tablename);
    END LOOP;
END $$;

在springboot中,可以使用jdbctemplate或本机查询来执行此代码。
您不需要从普通数据库中删除数据 views ,但在 materialized views ,需要通过执行 REFRESH MATERIALIZED VIEW 命令。

相关问题