猿问

如何在Oracle中重置序列?

如何在Oracle中重置序列?

在……里面PostgreSQL我可以做这样的事:

ALTER SEQUENCE serial RESTART WITH 0;

有甲骨文的等价物吗?


桃花长相依
浏览 1960回答 3
3回答

幕布斯6054654

下面是从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重置序列值另一项很好的讨论也在这里进行:如何重置序列?

千巷猫影

真正的重新启动是不可能的。AFAIK..(如果我错了,请纠正我!)但是,如果要将其设置为0,则只需删除并重新创建它。如果要将其设置为特定值,则可以将增量设置为负值并获得下一个值。也就是说,如果您的序列为500,您可以将其设置为100ALTER SEQUENCE serial INCREMENT BY -400;SELECT serial.NEXTVAL FROM dual;ALTER SEQUENCE serial INCREMENT BY 1;

MMMHUHU

这是我的方法:删除序列重造例子:--Drop sequenceDROP SEQUENCE MY_SEQ;-- Create sequence create sequence MY_SEQ minvalue 1maxvalue 999999999999999999999start with 1increment by 1cache 20;
随时随地看视频慕课网APP
我要回答