我读了liquibase的最佳实践,特别是用于管理存储过程:
管理存储过程:尝试为存储过程维护单独的更改日志,并使用runOnChange ="true".此标志强制LiquiBase检查变更集是否已修改.如果是这样,liquibase再次执行更改.
"为存储过程维护单独的更改日志"是什么意思?
我通常有一个与发布链接的更改日志目录.每个更改日志文件都包含在master.xml.
在遵循他们的建议时,目录结构会是什么?
a_h*_*ame 13
我们做的是这样的:
\---liquibase
| changelog.xml
| procedures.xml
|
+---procedures
procedure_one.sql
procedure_two.sql
Run Code Online (Sandbox Code Playgroud)
changelog.xml只是包括procedures.xml.在里面,procedures.xml我们有这样的事情:
<changeSet author="arthur" id="1" runOnChange="true" runInTransaction="true">
<sqlFile path="procedures/procedure_one.sql"
encoding="UTF-8"
relativeToChangelogFile="true"
endDelimiter=";"
splitStatements="true"/>
</changeSet>
<changeSet author="arthur" id="2" runOnChange="true" runInTransaction="true">
<sqlFile path="procedures/procedure_two.sql"
encoding="UTF-8"
relativeToChangelogFile="true"
endDelimiter=";"
splitStatements="true"/>
</changeSet>
Run Code Online (Sandbox Code Playgroud)
当然,runInTransaction="true"只有DBMS支持事务DDL才有意义.
过程的每个SQL脚本都是自包含的,并使用重新创建过程create or replace.对于不支持的DBMS,create or replace我们通常drop procedure; create procedure ...在那里做一个(有条件的).
通过明确地包含文件(而不是使用includeAll),我们可以控制创建过程和函数的顺序(如果使用另一个,则很重要).
如果添加新过程,则将新的SQL脚本和新的changeSet添加到 procedures.xml
| 归档时间: |
|
| 查看次数: |
3631 次 |
| 最近记录: |