【发布时间】:2013-03-04 13:09:59
【问题描述】:
我正在使用 Oracle 10g 维护一个数据库,我希望有一个从 1 开始并随着每增加一行而递增 1 的序列。
为了实现这一点,我创建了以下语句:
CREATE SEQUENCE PATIENTS_SEQ START WITH 1 INCREMENT BY 1 NOMINVALUE NOCACHE NOCYCLE;
但是,在将第一个条目插入到具有值 (PATIENTS_SEQ.NEXTVAL) 的表中时,计数从 2 而不是 1 开始。如果我将序列修改为以 0 开头,则会收到一个错误,即以 value 开头不能小于最小值。谁能帮助解决如何让我的计数从 1 开始正确开始?
【问题讨论】:
-
我无法复制。当我创建这个序列时,我得到一个初始值
1。 -
很奇怪,不管我做什么都是从
2的初始值开始的。我接受了马的建议。感谢您尝试重现错误。 -
也许您的表上有一个“插入前”触发器,它从序列中获取下一个值并将其用作 PK 的值?换句话说,您可能会意外地获得两次 nextval。
-
如果这有什么不同的话,我会使用 11g。
-
我绝对没有任何用户定义的“插入前”触发器。我用一个简单的表尝试过这个,
CREATE TABLE PATIENTS(ID INT CONSTRAINT PATIENTS_KEY PRIMARY KEY);。
标签: sql database oracle oracle10g