2012-06-14 9 views
9

Mam istniejącą tabelę mysql z dwiema kolumnami aib.Czy podczas tworzenia kolumny przy użyciu biblioteki typu liquibase należy podać wartość dla tej kolumny na podstawie istniejącej kolumny?

Teraz chcę dodać kolumnę c do tego stołu.

C powinna być pustych powinien mieć wartość domyślną NULL, z wyjątkiem tych rzędów, gdzie w kolumnie B ma wartość 10. W przypadku, b ma wartość 10, C powinna mieć wartość X.

I zrozumieć, że dość łatwo jest to zrobić za pomocą SQL, ale chcę to zrobić za pomocą metody "liquibase", ponieważ w naszych migracjach schematów używamy metody liquibase.

+3

Będziesz musiał użyć znacznika '' w Liquibase. –

+1

Dziękuję, @a_horse_with_no_name; to działało całkiem nieźle! – Aml

Odpowiedz

10

Czy próbowałeś już czegoś takiego?

<addColumn tableName="SGW_PRODOTTI_INFO_ATTRIBUTE"> 
    <column name="AlternativeListPrice" type="double" defaultValue="0.0"> 
    <constraints nullable="true"/> 
    </column> 
</addColumn> 
+0

To się zgadza. Odniesienie: http://www.liquibase.org/documentation/column.html –

4

Myślę, że najlepszym rozwiązaniem bez użycia zwykłego SQL jest następujący:

Możesz używać zarówno zmiany w obrębie changeset, ale dobrą praktyką jest, aby oddzielić jeden po wydzielonym changeset celach liquibase transakcja/wycofania.

Powiązane problemy