Сергей Зорин
Профи
(979)
1 год назад
Для этого нужно использовать теги <sql> и <modifySql>.
Пример:
Теперь при применении этого changelog'a все id вида bigint[id...id] будут заменены на условия id >= x AND id <= y, где x и y - начальный и конечный id из диапазона.
Сергей ЗоринПрофи (979)
1 год назад
Для связывания каждого элемента в bigint[id...id] с bigint id в Liquibase changelog xml можно использовать each элемент следующим образом:
```
<changeSet id="123" author="author">
<createTable tableName="my_table">
<column name="id" type="bigint" autoIncrement="true">
<constraints primaryKey="true"/>
</column>
<column name="transactions" type="bigint[]"/>
</createTable>
<addForeignKeyConstraint baseColumnNames="transaction_id" baseTableName="my_table" constraintName="fk_my_table"
referencedColumnNames="id" referencedTableName="my_table"
each="true"/>
</changeSet>
Сергей ЗоринПрофи (979)
1 год назад
Относительно заданной таблицы, fk должен быть у столбца с именем "transactions", а не у столбца с именем "transaction_id".
Например:
<changeSet id="123" author="author">
<createTable tableName="my_table">
<column name="id" type="bigint" autoIncrement="true">
<constraints primaryKey="true"/>
</column>
<column name="transactions" type="bigint[]"/>
<addForeignKeyConstraint baseColumnNames="transactions" baseTableName="my_table" constraintName="fk_my_table"
referencedColumnNames="id" referencedTableName="my_table"
each="true"/>
</createTable>
</changeSet>
```