添加新的变更集(SQL查询)时,能否在变更日志文件中获得架构名称?

时间:2018-09-21 08:34:40

标签: sql maven liquibase

当我添加

defaultSchemaName:myDB

在我的属性文件中,我可以这样获得模式名称:

UPDATE MYDB.DATABASECHANGELOGLOCK....
INSERT INTO MYDB.DATABASECHANGELOG....
UPDATE MYDB.DATABASECHANGELOGLOCK...

但是,如果我像这样向我的sql文件中添加新的变更集

--changeset
SELECT * FROM MYTABLE;

我无法获得架构名称。我的结果是:

UPDATE MYDB.DATABASECHANGELOGLOCK....
SELECT * FROM MYTABLE;
INSERT INTO MYDB.DATABASECHANGELOG....
UPDATE MYDB.DATABASECHANGELOGLOCK...

我的问题是,有没有办法像其他方法一样向我的新查询中添加架构名称?

SELECT * FROM MYDB.MYTABLE

2 个答案:

答案 0 :(得分:0)

属性文件由liquibase处理,用于其自身的变更集。 当您编写SQL语句时,liquibase会将它们直接执行到数据库中。

您可以通过在环境中定义默认数据库来解决此问题。

答案 1 :(得分:0)

您可以尝试修改sql文件(如果使用的是sqlfiles)并使用占位符。因此,例如,您将具有如下更改集:

--changeset
SELECT * FROM ${mySchema}MYTABLE;

我猜这的最佳实践是像这样在主变更日志中定义属性(您可以使用架构将其定义为空或预定义):

<property name="mySchema" value="" />

,然后在运行时在命令行中像参数一样传递它(-Dparameter.mySchema=MYDB.注意:我不确定在这里是否应该在liquibase.properties中将其前缀为parameter)或放置放入liquibase.properties