В ответ на этот вопрос: Ограничение таблицы Postgres с использованием group-by , Я пытаюсь перевести следующий код Postgres в Liquibase XML
create unique index idx_table on table(subcategory, base_unit)
where base_unit;
Я пробовал это:
<createIndex indexName="idx_table"
tableName="table"
unique="true">
<columnNames="subcategory, base_unit"/>
<where>base_unit</where>
</createIndex>
Но это дает мне ошибку: за типом элемента «columnNames» должны следовать спецификации атрибутов, «>» или «/>».
ОБНОВЛЕНИЕ:
<createIndex indexName="idx_table"
tableName="table"
unique="true">
<column name="subcategory"/>
<column name="base_unit"/>
<where>base_unit</where>
</createIndex>
Приводит к ошибке:
Invalid content was found starting with element 'where'. One of '{"liquibase.org/xml/ns/dbchangelog":column}' is expected.
2 ответа
Liquibase в настоящее время не поддерживает часть «где» в createIndex.
Вам нужно будет либо использовать modifySql:
<changeSet id="YOUR_ID" author="YOU">
<createIndex indexName="idx_table"
tableName="table"
unique="true">
<column name="subcategory"/>
<column name="base_unit"/>
</createIndex>
<modifySql>
<append value=" where base_unit"/>
</modifySql>
</changeSet>
Или просто используйте sql напрямую:
<changeSet id="YOUR_ID" author="YOU">
<sql>create unique index idx_table on table(subcategory, base_unit) where base_unit</sql>
</changeSet>
Я думаю, ваш xml должен выглядеть так:
<createIndex indexName="idx_table"
tableName="table"
unique="true">
<column name="subcategory"/>
<column name="base_unit"/>
<where>base_unit</where>
</createIndex>
Похожие вопросы
Связанные вопросы
Новые вопросы
xml
XML (Extensible Markup Language) - это формат структурированного документа, определяющий правила кодирования текста. При использовании этого тега включайте дополнительные теги, такие как язык программирования, наборы инструментов, используемые технологии XML и другие теги, описывающие среду, в которой опубликована проблема. Гибкость XML обеспечивает широкий спектр применений для передачи человеческих и машинных данных, в том числе конкретных инструментов и библиотек.