为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Oracle中重置序列?

如何在Oracle中重置序列?

桃花长相依 2019-06-29 17:57:26
如何在Oracle中重置序列?在……里面PostgreSQL我可以做这样的事:ALTER SEQUENCE serial RESTART WITH 0;有甲骨文的等价物吗?
查看完整描述

3 回答

?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

下面是从Oracle古鲁将任何序列重置为0的很好的过程汤姆·凯特..伟大的讨论的利弊在下面的链接也。

tkyte@TKYTE901.US.ORACLE.COM> create or replaceprocedure reset_seq( p_seq_name in varchar2 )is
    l_val number;begin
    execute immediate    'select ' || p_seq_name || '.nextval from dual' INTO l_val;

    execute immediate    'alter sequence ' || p_seq_name || ' increment by -' || l_val || 
                                                          ' minvalue 0';

    execute immediate    'select ' || p_seq_name || '.nextval from dual' INTO l_val;

    execute immediate    'alter sequence ' || p_seq_name || ' increment by 1 minvalue 0';end;/

从本页:动态SQL重置序列值
另一项很好的讨论也在这里进行:如何重置序列?


查看完整回答
反对 回复 2019-06-29
?
千巷猫影

TA贡献1829条经验 获得超7个赞

真正的重新启动是不可能的。AFAIK..(如果我错了,请纠正我!)

但是,如果要将其设置为0,则只需删除并重新创建它。

如果要将其设置为特定值,则可以将增量设置为负值并获得下一个值。

也就是说,如果您的序列为500,您可以将其设置为100

ALTER SEQUENCE serial INCREMENT BY -400;SELECT serial.NEXTVAL FROM dual;ALTER SEQUENCE serial INCREMENT BY 1;


查看完整回答
反对 回复 2019-06-29
?
MMMHUHU

TA贡献1834条经验 获得超8个赞

这是我的方法:

  1. 删除序列
  2. 重造

例子:

--Drop sequenceDROP SEQUENCE MY_SEQ;-- Create sequence create sequence MY_SEQ
minvalue 1maxvalue 999999999999999999999start with 1increment by 1cache 20;


查看完整回答
反对 回复 2019-06-29
  • 3 回答
  • 0 关注
  • 1959 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信