Sql Oracle从1开始的启动序列

Sql Oracle从1开始的启动序列,sql,database,oracle,oracle10g,Sql,Database,Oracle,Oracle10g,我正在使用Oracle10g维护一个数据库,我希望有一个从1开始,每增加一行递增1的序列 为了实现这一点,我创建了以下声明: CREATE SEQUENCE PATIENTS_SEQ START WITH 1 INCREMENT BY 1 NOMINVALUE NOCACHE NOCYCLE; 但是,在使用值(PATIENTS_SEQ.NEXTVAL)将第一个条目插入表中时,计数从2开始,而不是从1开始。如果将序列修改为以0开头,则会出现一个错误,即“以值开头”不能小于“最小值”。有人能帮我解

我正在使用Oracle10g维护一个数据库,我希望有一个从1开始,每增加一行递增1的序列

为了实现这一点,我创建了以下声明:

CREATE SEQUENCE PATIENTS_SEQ START WITH 1 INCREMENT BY 1 NOMINVALUE NOCACHE NOCYCLE;

但是,在使用值(PATIENTS_SEQ.NEXTVAL)将第一个条目插入表中时,计数从2开始,而不是从1开始。如果将序列修改为以0开头,则会出现一个错误,即“以值开头”不能小于“最小值”。有人能帮我解决如何从1开始正确计数的问题吗?

只需将minvalue设置为0即可:

CREATE SEQUENCE PATIENTS_SEQ 
  START WITH 0 
  INCREMENT BY 1 
  MINVALUE 0 
  NOCACHE 
  NOCYCLE;

我不能责备你。当我创建这个序列时,我得到了一个初始值
1
。非常奇怪,无论我做什么,它都是从一个初始值
2
开始的。我同意马的建议。感谢您尝试重现错误。也许您在表上有一个“插入前”触发器,它从序列中获取下一个值并将其用作PK值?换句话说,您可能会意外地获得两次nextval。如果这有什么区别的话,我使用的是11g。我肯定没有任何用户定义的“插入前”触发器。我用一个简单的表尝试了这一点,
createtablepatients(ID INT CONSTRAINT PATIENTS\u KEY主键)。为什么MINVALUE为0?@一匹没有名字的马:我想知道它工作的原因。