2013-05-20 11 views
8

Ho cercato di trovare una risposta a questa domanda, ma non potevo.è possibile aggiornare una riga esistente in DB, usando liquibase?

Così, per esempio ho questa tabella:

TABELLA:

col1 | col2 
123  0 
124  1 

e voglio cambiare il valore col2 a 1 e questo è come sto cercando di farlo:

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

Ahimè, non funziona. Quindi, mi stavo chiedendo se è possibile farlo anche con il liquibase? Dal momento che, la maggior parte dei tag nella documentazione hanno a che fare con la creazione di tabella, le colonne aggiungendo ecc

+1

Il ';' dopo 'tablename' è sbagliato. ';' Termina una ** istruzione ** non una singola riga. E la prossima volta includi il messaggio di errore. "* non funziona *" non è affatto utile (a meno che l'errore sia * quello * ovvio) –

+1

Ciao, grazie per la risposta. Ho provato con; e senza; -> stesso risultato. Ora, vorrei avere un messaggio di errore - perché allora almeno saprei cosa sta andando male, ma l'applicazione viene eseguita senza errori, avvisi o eccezioni. Solo il cambiamento che voglio fare nel database, no. – user2187935

+0

Sei sicuro che il changeset sia stato eseguito contro il tuo database? Ad esempio, se si esegue il comando "changelogSync", questo contrassegna i changeset come eseguiti nel proprio database senza effettivamente eseguire le istruzioni SQL. In seguito, eseguire liquibase non eseguirà un changeset contrassegnato come eseguito in precedenza. –

risposta

17

È possibile utilizzare la seguente sintassi liquibase per aggiornare:

<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> 

Per le altre opzioni disponibili si prega Liquibase Update

+0

HEllo Non vedo alcun tag '' nella documentazione ma piuttosto ''. Non vedo l'equivalenza a 'SET COLUMN = Columnnewvalue', tutto quello che vedo è' UPDATE TABLENAME dove col1 = '123''. Correggimi Se sbagli. grazie –

+0

Probabilmente un errore di battitura. Ho aggiornato la risposta. –

Problemi correlati