Sql Oracle从1开始的启动序列
我正在使用Oracle10g维护一个数据库,我希望有一个从1开始,每增加一行递增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开头,则会出现一个错误,即“以值开头”不能小于“最小值”。有人能帮我解
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?@一匹没有名字的马:我想知道它工作的原因。