liquibase可以在sql中配置占位符吗

问题描述 投票:0回答:2

liquibase可以在sql中配置占位符吗?

示例代码:

<changeSet author="name" id="sql-example" runAlways="true" failOnError="true">
    <sql>SELECT schema.admin_insert('PARAMETER_PLACEHOLDER')</sql>
</changeSet>

我可以在属性文件中定义参数值吗?以便 liquibase 替换属性文件中的参数值?

database liquibase
2个回答
5
投票

是的,可以。 Liquibase 将这些称为“更改日志参数”

http://www.liquibase.org/documentation/changelog_parameters.html

该页面的简短摘录:

Liquibase 允许动态替换变更日志中的参数。 要替换的参数使用

${parameterName}
语法进行描述。

配置参数值

按以下顺序查找参数值:

  • 作为参数传递给 Liquibase 运行程序(请参阅 Ant、command_line、 等有关如何通过它们的文档)
  • 作为 JVM 系统属性
  • DatabaseChangeLog 文件的参数块(
    <property>
    标签)中 本身。

示例

<createTable tableName="${table.name}">
      <column name="id" type="int"/>
      <column name="${column1.name}" type="varchar(${column1.length})"/>
      <column name="${column2.name}" type="int"/> 
</createTable>

0
投票

根据https://docs.liquibase.com/concepts/changelogs/property-substitution.html

您可以使用:

--liquibase formatted sql

--changeset example:1
CREATE TABLE ${schema.name}.person
( id int primary key,
  first_name varchar(50) NOT NULL,
  last_name varchar(50) NOT NULL
)

使用配置的环境变量

schema.name=dev_schema
,您将收到以下 SQL 输出:
CREATE TABLE dev_schema.person

© www.soinside.com 2019 - 2024. All rights reserved.