我需要重命名我的表的序列。有很多表,他们是复杂的,删除任何东西将是不可取的。有没有办法重命名他们?
我试过:
ALTER SEQUENCE ISEQ$$_149698 RENAME TO NEW_SEQUENCE;
RENAME ISEQ$$_149698 to NEW_SEQUENCE;
第一个选项抛出以下错误:
SQL Error [2286] [42000]: ORA-02286: no options specified for ALTER SEQUENCE
第二:
SQL Error [32799] [99999]: ORA-32799: cannot rename a system-generated sequence
2条答案
按热度按时间zkure5ic1#
您不能重命名为标识列生成的序列。(正如其他用户所指出的,也正如错误消息所暗示的。)因此,我建议您使用序列默认值,而不是标识列。
例如:
但是,默认方法也有一些缺点:
1.此功能在12.1之前不可用。(尽管标识列也是一个新功能。)
1.你必须自己创建序列(很明显)。
1.您还需要记住将序列授予任何将向表中插入行的用户:
1.如果重命名默认序列,还必须修改默认值以指向新序列。
尽管使用序列缺省值有一些缺点,但我仍然喜欢这种方法而不是标识列,因为我希望所有对象在每个环境中都具有完全相同的名称。
tp5buhyn2#