添加新的 Table 列时,我在 Liquibase 脚本中找不到 IF_NOT_EXIST 的任何属性

While adding a new Table column I cannot find any attribute of IF_NOT_EXIST in the Liquibase Script

<changeSet author="John" id="addColumn-example"> 
    <addColumn TableName="person" >
        <column name="address"type="varchar(255)"/> 
    </addColumn>  
</changeSet>

我找不到上述更改集标签的任何属性或其他内容,这些标签的工作方式与以下预期查询

ALTER TABLE PERSON 
    ADD COLUMN IF NOT EXISTS ADDRESS VARCHAR(255); 

Liquibase 文档中没有 IF NOT EXISTS 属性。它只显示 add column,谁能建议怎么做?

我不完全确定这是否是您要查找的内容,但我建议您将先决条件添加到您的变更集中。 如果不满足前提条件的要求,这将阻止执行变更集。看看 documentation.

因此之后您的变更集将如下所示:

<changeSet author="John" id="addColumn-example">
    <preConditions onFail="MARK_RAN" onFailMessage="Column address already exists!">
        <not>
            <columnExists tableName="person" columnName="address"/>
        </not>
    </preConditions>
    <addColumn tableName="person">
        <column name="address" type="varchar(255)"/>
    </addColumn>
</changeSet>

值得注意的是用标签取反。这是必需的,因为我们要检查特定列是否 not 是否已经存在。当然你可以选择最适合你的precondition onFail策略。