【发布时间】:2016-03-11 17:32:31
【问题描述】:
我的数据库中有一个序列,它是通过 Liquibase 生成的。在重构过程中,我们决定不喜欢我们给它起的名字,我们想重命名它,保留它当前存在的所有数据。
alter a sequence 似乎可行,但我没有看到任何关于如何重命名序列的信息。有没有办法做到这一点,或者一个合理的解决方法?
(如果重要的话,我使用的是 Oracle SQL)
【问题讨论】:
标签: liquibase
我的数据库中有一个序列,它是通过 Liquibase 生成的。在重构过程中,我们决定不喜欢我们给它起的名字,我们想重命名它,保留它当前存在的所有数据。
alter a sequence 似乎可行,但我没有看到任何关于如何重命名序列的信息。有没有办法做到这一点,或者一个合理的解决方法?
(如果重要的话,我使用的是 Oracle SQL)
【问题讨论】:
标签: liquibase
虽然没有记录,但 Liquibase 支持这种重构。不确定在哪个版本中实施了此更改,但 class supporting the feature 已于 2014 年 1 月 30 日提交。有趣的是,original issue 仍未解决。
无论如何,重构应该只适用于 Oracle 和 Postgres。我已经在 Oracle 上使用 Liquibase 3.4.1 对其进行了测试:
databaseChangeLog:
- changeSet:
id: change_set_id
author: me
dbms: oracle
changes:
- renameSequence:
oldSequenceName: old_name_seq
newSequenceName: new_name_seq
上面的重构是 YAML 格式,但是你很容易猜到它的 XML 对应。
在 Oracle 上,这会生成以下语句:
RENAME old_name_seq TO new_name_seq;
另外2个支持的参数是catalogName和schemaName。
【讨论】: