2009-10-21 69 views
5

我正在评估liquibase从今天开始的项目。几个来自liquibase noob的问题

有没有人用它来创建程序,函数,基本上所有的plsql的东西?

如果没有,是否可以在xml文件中编写嵌入式sql代码?

在此先感谢。

回答

5

liquibase中有一个用于管理程序的内置createProcedure标签。最好的方法通常是将或标签与runOnChange组合在一起,这样当你更新定义时,liquibase就会更新你的过程。通过这种方式,您可以在更新日志xml文件之间进行区分,并查看过程如何更改。

使用sqlFile标记为每个存储过程引用文件也很流行,或者像您说的那样,您可以使用sql标记来内联自定义sql。

+0

哇!很高兴知道你在这里:) – Tom 2009-10-22 02:12:38

+0

我无处不在:) LMK,如果你遇到任何其他问题或问题,或需要更多的澄清 – 2009-10-22 04:47:30

1

尽管我没有使用liquibase进行存储过程,但我还是有一些Liquibase的更多通用操作的经验。

可以编写自定义sql,嵌入到xml文件中或从外部文件引用。

2

我遇到过尝试使用存储过程,触发器和函数的sql标记的问题,但在我的情况下,这些可能是MySQL JDBC驱动程序的问题,而不是Liquibase本身。我已经解决的做法是按照Nathan的建议使用sqlFile重构,然后在同一个项目中控制SP /触发器/函数代码作为更改日志,并在源代码系统中进行版本控制。这可以让你管理SP /任何代码,就像它是真正的源代码一样。

在包含sqlFile重构的changeSet中设置runOnChange =“true”是至关重要的。正是这个开关(感谢你,Nathan)使程序数据库代码的真正源代码控制成为可能。

+0

嘿蒂姆,所以如果我得到它的要点,是否合乎逻辑有一个{schemaName}/sprocs /填充了sproc_name.xml文件,然后在更新这些文件时让Liquibase检测并更新模式? – David 2010-12-10 18:00:13

+0

这会起作用,但我认为它会有点笨重。我所做的是有一个单独的“stored-proc.xml”(或其他)更改日志,其中包含runOnChange =“true”changeSets,每个均运行位于db/src的单个幂等SP创建SQL脚本/procs/*.sql(或某处)。只要每次SP代码可能更改时更新该更改日志,就会始终在数据库和源代码控制中拥有最新的SP。添加新SP时,请将新的changeSet添加到该更改日志中。很棒! – tlberglund 2010-12-14 22:41:09