Pytanie Dodanie złożonego ograniczenia unikalnego w Liquibase


Tworzę tabelę linków, która ma 3 kolumny; id, product_id, tournament_id.

Dodanie uniqueConstraint do kolumny "id" jest banalne, ale chcę się upewnić, że każda para (product_id, tournament_id) jest unikalna.

Pokazuje przykład na Liquibase.org

<changeSet author="liquibase-docs" id="addUniqueConstraint-example">
<addUniqueConstraint catalogName="cat"
        columnNames="id, name"
        constraintName="const_name"
        deferrable="true"
        disabled="true"
        initiallyDeferred="true"
        schemaName="public"
        tableName="person"
        tablespace="A String"/>
</changeSet>

ale czy można to osiągnąć w ramach <createTable> blok?

Ponadto, aby potwierdzić; czy to tworzy unikalne ograniczenie złożone na dwóch kolumnach, czy tworzy dwa oddzielne ograniczenia unikatowe?


11
2018-01-28 12:47


pochodzenie




Odpowiedzi:


Jestem prawie pewien, że:

  1. ty żargon zrób to wewnątrz samego tagu createTable, ale ty mogą zrób to w ramach tego samego zestawu zmian, jak przy tworzeniu tabeli.
  2. To robi utwórz złożone unikalne ograniczenie na dwóch kolumnach. Jednym ze sposobów sprawdzenia jest uruchomienie lasera za pomocą polecenia generowania SQL dla aktualizacji zamiast uruchamiania polecenia update i sprawdzania, co robi dla twojej bazy danych. W wierszu poleceń, zamiast uruchamiać liquibase update uciekłbyś liquibase updateSQL.

8
2018-01-28 17:58





Możesz przeczytać liquibase podręcznik również podobny problem można znaleźć tutaj 

W twoim przypadku powinno być:

<changeSet author="liquibase-docs" id="addUniqueConstraint-example">
<addUniqueConstraint
        columnNames="id, product_id, tournament_id"
        constraintName="your_constraint_name"
        tableName="person"
        />
</changeSet>

1
2018-02-06 07:53