我使用的是Oracle甲骨文:MAX(ID)之间的差值+1和sequence.nextval
是什么,当我们使用ID
和max(id)+1
使用sequance.nexval
,在哪里使用,当创建区别?
像:
insert into student (id,name) values (select max(id)+1 from student, 'abc');
和
insert into student (id,name) values (SQ_STUDENT.nextval, 'abc');
SQ_STUDENT.nextval
有时给出了重复记录错误...
请帮我在这无疑
但过一段时间,为什么我得到重复记录错误与sequence.nextval允许和它的工作原理当我运行与max(id)+1 –
@PriyaPrajapati相同的查询 - 因为您的序列的当前值低于表中的最大ID。如果您在表中手动插入值,则序列不会被修改。您不应该混淆两种方法 - 获取序列,使其高于表格值,然后仅使用序列。 –
@Alex - 感谢您的回复,这可能是错误的原因 –