我需要在另一个模式中重命名一堆序列。
将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_seqCREATE SEQUENCE new_seq START WITH <CURRVAL FROM old_seq>;
如果您使用INCREMENT
而不是START WITH
,您应该考虑到增量将应用于对序列中的值的每个请求。您必须创建序列,然后将增量重置为1。使用START WITH
可以避免这个问题。
可以直接重命名:
rename old_sequence to new_sequence;
它会说表重命名,但你可以忽略它。您的序列将被重命名。
。