如果条目不存在,则插入表列

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

在Liquibase中,如果值尚未设置,我想插入值。对于普通插入,我怀疑如果插入的值已经存在,则插入的值将覆盖先前的值。我希望它仅插入(如果不存在)。能做到吗?

现在,我正在使用插入件,如下所示:

<insert tableName="state">
  <column name="name" value="fooFoo"/>
  <column name="enabled" valueBoolean="true"/>
</insert>
java xml liquibase
2个回答
0
投票

您可以参考以下问题:

MySQL: Insert record if not exists in table

只需在Liquibase中使用标记即可。

希望这会有所帮助。

编辑:

INSERT INTO状态(名称,已启用)SELECT * FROM(SELECT'fooFoo','true')AS tmp不存在的地方(SELECT name FROM state WHERE name ='fooFoo')LIMIT 1

sql>


0
投票

正确的方法是使用preConditions

有一个<sqlCheck>前提条件。有了它,您的changeSet将如下所示:

<changeSet id="foo" author="bar">
    <preConditions onFail="MARK_RAN">
        <sqlCheck expectedResult="0">
            SELECT COUNT(*) FROM state WHERE name='fooFoo' AND enabled=true;
        </sqlCheck>
    </preConditions>
    <insert tableName="state">
      <column name="name" value="fooFoo"/>
      <column name="enabled" valueBoolean="true"/>
    </insert>
</changeSet>
© www.soinside.com 2019 - 2024. All rights reserved.