Прямой ответ таков: когда logi c в любой из функций Liquibase не удовлетворяет вашим потребностям, вы можете выбрать следующие параметры:
- Укажите точное значение sql, которое вы хотите с помощью
<sql>
тег. Это дает вам контроль над тем, что именно будет работать, и позволяет вам с помощью Liquibase все, что ваша база данных предоставляет для SQL
Пример:
<changeSet id="1" author="xyz">
<sql>DROP INDEX customer_login_event@unq_customer_id cascade</sql>
<changeSet>
Добавьте блок
<modifySql>
в свой набор изменений. Это позволяет вам по-прежнему использовать тег dropIndex, но настроить SQL.
Пример:
<changeSet id="1" author="xyz">
<dropIndex indexName="unq_customer_id"
schemaName="public"
tableName="CUSTOMER_LOGIN_EVENT"/>
<modifySql>
<replace replace="unq_customer_id" with="customer_login_event@unq_customer_id"/>
<append value=" CASCADE"/>
</modifySql>
</changeSet>
Но я бы также спросил, есть ли лучший ответ в вашем дело в сценарии удаления ограничения, а не индекса? DROP ... CASCADE может быть пугающим вызовом, поскольку вы не видите / не контролируете то, что на самом деле отбрасывается.
Они реализуют ограничение, создавая индекс, но с вашей точки зрения это должно быть просто деталью реализации. Если вы изначально создали ограничение, более читаемым / понятным / более безопасным может быть удаление ограничения, которое должно привести к тому, что CockroachDB удалит соответствующий индекс, а не удалит индекс таким образом, чтобы прозрачно удалить ограничение.