我想为自己的变更集使用columnExists
前提,
但是无法指定确切的架构,因为我们将在多个环境中运行该架构,架构名称可能会有所不同。
问题是,方案liquibase选择的将与
等效吗?select sys_context('USERENV', 'CURRENT_SCHEMA') from dual;
如果要紧,我们在这里谈论Oracle。
答案 0 :(得分:1)
在Oracle中,用户与模式之间存在一对一的关系。
用于登录Oracle的用户帐户是默认模式,除非您已在会话中进行了有效更改。
我要回答“只是省略模式”,直到我看到Liquibase要求schemaName
的先决条件是columnExists
(我认为这很愚蠢)
因此,您不能真正使用columnExists
,而需要使用<sqlCheck>
:
<preConditions onFail="HALT">
<sqlCheck expectedResult="1">
select count(*)
from user_tab_columns
where column_name = 'SOME_COLUMN'
and table_name = 'SOME_TABLE'
</sqlCheck>
</preConditions>
user_tab_columns
包含当前用户拥有(即已创建)的表的列。