2013-05-20 13 views
8

この質問に対する回答を見つけようとしましたが、できませんでした。だから、liquibaseを使って、DB内の既存の行を更新することは可能ですか?

、例えば私は、このテーブルを持っている:

TABLE:

col1 | col2 
123  0 
124  1 

を、私は1にcol2に値を変更すると、これは私がそれをやろうとしている方法です。

<changeSet author="myName" id="7799"> 
     <sql> 
     UPDATE TABLENAME; 
     SET COL1='1' WHERE col1='123'; 
     </sql> 
</changeSet> 

ああ、うまくいきません。それで、私はそれがliquibaseでそれをすることさえ可能かどうか疑問に思っていましたか? 、ドキュメントのほとんどのタグがテーブルを作成するとしなければならない、ので、列の追加など

+1

をご確認ください。 'tablename'の後の'; 'が間違っています。 ';'は**文を終わらせます**。次回はエラーメッセージを含めてください。 "* does not work *"は役に立たない(エラーが*明らかでない限り) –

+1

こんにちは、ありがとうございます。私は一緒に試みた。なし。 - >同じ結果。さて、私はエラーメッセージが表示されたらいいと思います。なぜなら、少なくとも何がうまくいかないのかを知るためですが、アプリケーションはエラー、警告、または例外なしで実行されます。私がデータベースでやりたいだけの変更はしません。 – user2187935

+0

あなたのデータベースに対してチェンジセットが実行されていますか?たとえば、 "changelogSync"コマンドを実行すると、実際にSQL文を実行せずにデータベースで実行されたチェンジセットがマークされます。その後、実行中のliquibaseは以前に実行したとマークされたチェンジセットを実行しません。 –

答えて

17

あなたが更新するには、次のLiquiBaseを構文を使用することができます。

利用できるその他のオプションについては
<changeSet author="myname" id="7799"> 
    <update catalogName="dbname" 
      schemaName="public" 
      tableName="TABLENAME"> 
     <column name="COL1" value='1' type="varchar(50)"/> 
     <where>col1='123'</where> 
    </update> 
</changeSet> 

Liquibase Update

+0

HElloドキュメンテーションには「」タグはありませんが、「」と表示されています。私は 'SET COLUMN = Columnnewvalue'と等価ではありませんが、どこに' UPDATE TABLENAME 'があるのか​​はcol1 =' 123 'です。もし私が間違っていれば正解。ありがとう –

+0

おそらくタイプミス。私は答えを更新しました。 –

関連する問題