我的数据库中有一个序列,我是通过Liquibase生成的。在重构过程中,我们认为我们并不喜欢我们给它的名称,我们想重命名它,保留当前存在的所有数据。
alter a sequence似乎有可能,但我没有看到有关如何重命名序列的任何内容。有办法做到这一点,还是合理的解决方法?
(如果重要,我使用的是Oracle SQL)
答案 0 :(得分:6)
虽然没有记录,但Liquibase支持这种重构。不确定此更改的实施版本,但class supporting the feature已于2014年1月30日提交。但有趣的是,original issue尚未解决。
无论如何,重构应该仅适用于 Oracle 和 Postgres 。我已使用 Liquibase 3.4.1 在 Oracle 上对其进行了测试:
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
。
答案 1 :(得分:5)
目前没有重命名序列的内置重构。如果您的数据库引擎支持它,您可以使用<sql>
或<sqlFile>
更改执行支持的任何方法。
您说您使用的是Oracle SQL。 RENAME语句允许重命名序列。所以你的Liquibase脚本看起来像这样:
<sql>RENAME old_sequence_name TO new_sequence_name</sql>