使用 oracle 更改 Liquibase 中的序列

Posted

技术标签:

【中文标题】使用 oracle 更改 Liquibase 中的序列【英文标题】:Changing the sequence in Liquibase with oracle 【发布时间】:2020-07-30 15:35:30 【问题描述】:

我有一个表X 几年前在 Liquibase 中创建的,没有序列。最近,尝试通过以下步骤进行更正:

使用startValue=2000 创建了一个序列; 在 ID 列上使用该序列创建了一个新的临时表 (Y); 将表 X 中的所有数据移到表 Y 中; 删除表 X; 将表 Y 重命名为 X;

现在这些更改已推送到 prod。他们要求我将 sequence 从 2000 年更改为 2050 年。

我之前从未使用过 Liquibase;我的想法是删除该序列并使用startValue=2050 创建一个新序列。

但我不确定是否有更好的方法。

感谢您的帮助!

【问题讨论】:

【参考方案1】:

这种方法对我有用:

<changeSet  author="ml"  id="20200730-sequence">  
    <dropSequence  sequenceName="seq_id"/>  
    <createSequence    
            sequenceName="seq_id"
            startValue="2050"
            incrementBy="1"  
            ordered="true"/> 
</changeSet>

【讨论】:

以上是关于使用 oracle 更改 Liquibase 中的序列的主要内容,如果未能解决你的问题,请参考以下文章

python项目中的Liquibase集成

从 MySQL 中的现有表生成更改日志时,liquibase 如何处理自动递增的 PK?

创建索引时的 Liquibase 缓慢

Oracle 是不是支持使用 Liquibase 的 Auto_Increment

liquibase 中的 Java 代码变更集

Grails 中的 Liquibase:“空结果集,预期为一行”