重命名具有相同曲线的其他模式中的序列



我需要在另一个模式中重命名一堆序列。

将old_seq重命名为new_seq不起作用

尝试:

ALTER SEQUENCE old_seq RENAME TO new_seq;

但是显示错误

ORA-02286: no options specified for ALTER SEQUENCE 

我不希望在创建序列时提及前面提到的所有选项,因为它们需要相同。只需更改名称

如果您不是该序列的所有者,您可以使用以下步骤:-

SELECT CURVAL FROM old_seq;

这将给你Current_Sequence的值。

现在使用 删除这个序列
DROP SEQUENCE old_seq;

和创建新的序列相同的名称。使用

CREATE SEQUENCE old_seq;

然后修改为:-

ALTER SEQUENCE seq_example INCREMET BY <CURVAL FROM OLD VALUE>;

@ankit的答案非常符合解决这个问题所需的内容,但它提出了一些问题和拼写错误,我正在修复这个答案。我希望这对你有用。

首先,您必须选择old_seq:

的当前值
SELECT old_seq.CURRVAL FROM dual;

如果您得到ORA-08002错误,这是因为您需要首先请求NEXTVAL以便初始化序列。只做:

SELECT old_seq.NEXTVAL FROM dual;

,然后再次请求CURRVAL。

现在有了当前值,只需使用

删除旧序列
DROP SEQUENCE old_seq;
并使用 创建名称为new_seq的new_seq
CREATE SEQUENCE new_seq START WITH <CURRVAL FROM old_seq>;

如果您使用INCREMENT而不是START WITH,您应该考虑到增量将应用于对序列中的值的每个请求。您必须创建序列,然后将增量重置为1。使用START WITH可以避免这个问题。

可以直接重命名:

rename old_sequence to new_sequence;

它会说表重命名,但你可以忽略它。您的序列将被重命名。

相关内容

  • 没有找到相关文章

最新更新