单个项目的 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 标记每个变更集。
我有 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 标记每个变更集。