web-dev-qa-db-ja.com

リキベースを使用して、テーブルの1行を更新する

これが正しい構文であり、liquibaseを使用してDBにデータを入力する正しい方法であるかどうかを誰かが確認できることを望んでいましたか?すべて、私はテーブルの行の値を変更することを望んでおり、次のようにしています:

<changeSet author="name" id="1231">
<update tableName="SomeTable">
    <column name="Properties" value="1" />
    <where>PROPERTYNAME = 'someNameOfThePropery"</where>
</update>
<changeSet>

必要なのは、いくつかのテーブルの行の1つの値を変更することだけです。上記は機能しませんが、アプリケーションはコンパイルされ、不満はありませんでしたが、悲しいかな、値は変更されませんでした。

ありがとうございました

19
user2187935

はい、可能です。以下の構文を参照してください。

<changeSet author="name" id="1231">
    <update catalogName="dbname"
            schemaName="public"
            tableName="SomeTable">
        <column name="Properties" type="varchar(255)"/>
        <where>PROPERTYNAME = 'someNameOfThePropery'</where>
    </update>
</changeSet>

詳細は Liquibase Update

0
Mohammad Nadeem

上記の答えは非常に複雑で、ほとんどの場合これで十分です。

<changeSet author="name" id="123">
    <update tableName="SomeTable">
        <column name="PropertyToSet" value="1" />
        <where>otherProperty = 'otherPropertyValue'</where>
    </update>
</changeSet>

wHERE句では、二重引用符ではなく '単一引用符を使用することが重要です。

54
JavaDevSweden

上記の投稿は、この方法で正しい形式に変更できます。この投稿の質問で期待される結果である挿入されたvalue = "1"。

<changeSet author="name" id="1231">
    <update catalogName="dbname"
            schemaName="public"
            tableName="SomeTable">
        <column name="Properties" **value="1"** type="varchar(255)"/>
        <where>PROPERTYNAME = 'someNameOfThePropery'</where>
    </update>
</changeSet>
1
Code Buster