liquibase:dropAll也应该删除触发器函数

时间:2014-03-12 12:27:58

标签: postgresql maven liquibase

我有一个使用Liquibase设置的PostgreSQL数据库。当我使用maven运行liquibase:dropAll时,除了触发函数外,它会丢弃所有内容。是否有一种方法,即使用该maven目标也会触发功能被丢弃?

因为当我在dropAll之后重新应用我的变更集时,它无法创建现有的函数。

1 个答案:

答案 0 :(得分:1)

不幸的是没有。实现dropAll的方法是它使用liquibase快照函数来查找要删除的所有对象,除了快照未查找的对象类型之外,它工作正常。快照处理标准类型,如表,列,视图和序列,但不会涉及更多特定于数据库的类型,如触发器,函数,过程,用户定义的类型等。由于快照不知道触发器,dropAll无法知道删除它们

如果您使用的是postgresql,最简单的方法可能就是运行

drop schema public cascade;
create schema public;

如" Drop all tables in PostgreSQL?"而不是使用liqubase dropAll。