You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Liquibase回滚语句触发时机及删除索引场景下的回滚写法咨询

Liquibase SQL回滚相关问题解答

问题1:注释中的DROP INDEX ORDERS_IDX_SESSION_ID;语句是在操作出错时由Liquibase自动执行,还是仅作为开发者提示?

这条语句既不是操作出错时自动执行,也不是单纯的开发者提示——它是Liquibase的正式可执行回滚指令。只有当你主动触发Liquibase的回滚操作(比如执行liquibase rollback-count 1这类命令)时,Liquibase才会调用这条语句,来撤销当前changeset创建索引的操作。

问题2:若当前操作是删除索引,应编写何种回滚语句?

如果当前changeset的核心操作是删除目标索引(比如执行DROP INDEX ORDERS_IDX_SESSION_ID;),对应的回滚语句需要完整还原索引的创建逻辑,也就是把原创建索引的SQL写在--rollback后面,示例如下:

--liquibase formatted sql    
--changeset Jack:drop_session_id_index rollbackSplitStatements:true runInTransaction:false
DROP INDEX ORDERS_IDX_SESSION_ID;
--rollback CREATE INDEX CONCURRENTLY ORDERS_IDX_SESSION_ID ON orders((orders_counter->>'sessionId'));

要注意保持回滚语句和原创建语句的一致性(比如保留CONCURRENTLY关键字),确保回滚后数据库状态能完全恢复。

内容的提问来源于stack exchange,提问作者Ekaterina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 00:24:52