我如何在Oracle中重置序列?
我如何在Oracle中重置序列?
在PostgreSQL中,我可以做类似这样的事情:
ALTER SEQUENCE serial RESTART WITH 0;
是否有Oracle的等价物?
admin 更改状态以发布 2023年5月20日
下面是Oracle大师Tom Kyte提供的一个好的重置任何序列为0的程序。以下链接中的讨论也很不错。
tkyte@TKYTE901.US.ORACLE.COM> create or replace procedure 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
另一个不错的讨论在这里:如何重置序列?