2013-05-20 61 views
8

試圖找到這個問題的答案,但不能。是否可以使用liquibase更新數據庫中的現有行?

所以,比如我有這個表:

表:

col1 | col2 
123  0 
124  1 

,我想改變COL2值設置爲1,這是我正在努力做到這一點:

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

唉,它不工作。所以,我想知道是否可以用liquibase做到這一點?因爲,在文檔中大多數標記有創建表做,添加列等

+1

'tablename'之後的';'是錯誤的。 ';'終止**語句**不是一行。下次請包括錯誤信息。 「*不起作用*」根本沒有幫助(除非錯誤是*明顯的)* –

+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

你好我沒有在文檔中看到任何''標籤,而是''。我沒有看到與「SET COLUMN = Columnnewvalue」的等價關係,我只能看到'UPDATE TABLENAME'在哪裏col1 ='123''。糾正我如果錯了。謝謝 –

+0

可能是一個錯字。我已經更新了答案。 –

相關問題