【发布时间】:2011-11-21 03:54:45
【问题描述】:
如何重置自增主键?
我有一个像这样的 doc_id_seq 和一个 doc_pk_trg 触发器:
CREATE SEQUENCE doc_id_seq START WITH 1;
CREATE OR REPLACE TRIGGER doc_pk_trg
BEFORE INSERT ON TFIDF FOR EACH ROW
BEGIN
IF :NEW.doc_id IS NULL THEN
SELECT doc_id_seq.NEXTVAL INTO :NEW.doc_id FROM DUAL;
END IF;
END;
/
我想学习重置序列。我怎样才能做到这一点 ?
【问题讨论】:
-
您要解决的问题是什么?正如 Ollie 指出的那样,您可以使用
ALTER SEQUENCE重置序列。但是你应该很少关心主键的值。唯一让我大吃一惊的是,如果你正在做一些事情,比如手动将数据从一个环境复制到另一个环境(即 prod 到 dev),并且你需要增加 dev 中序列的NEXTVAL,这样你就不会生成重复键。然而,当这个问题被问到时,人们通常会试图避免序列生成值中的“空白”,这将不起作用。
标签: oracle plsql auto-increment