单个项目的 Liquibase DB 特定脚本

Liquibase DB specific scripts for single project

我有 spring 引导项目,其中 postgresql 作为主数据库,H2 作为内存数据库用于测试。我添加了一个 PL/pgSQL 过程来执行一些自定义逻辑,现在我的测试停止工作了。 liquibase 用户通常如何解决此类情况?

我的程序是:

CREATE OR REPLACE FUNCTION <name>() RETURNS trigger AS'
            BEGIN
                DELETE FROM gator_device
                WHERE id = OLD....
                RETURN NULL ;
            END;'
            LANGUAGE plpgsql;

            CREATE TRIGGER <name>
            AFTER DELETE ON <name>
            FOR EACH ROW EXECUTE PROCEDURE <name>();

如您问题的评论中所述,您需要使用属性 dbms="postgresql" 标记创建函数的变更集。当 Liquibase 决定将哪些变更集应用于数据库时,如果该变更集仅适用于某些数据库类型,它可以跳过该变更集。要完全跨平台,您需要编写 'equivalent' 个适用于您要支持的每个数据库的变更集,并使用每个变更集支持的 dbms 标记每个变更集。