我试图了解 nextval 如何递增序列: 在下面的内容中,似乎在 INSERT INTO ...VALUES 语句中, nextval 将增加序列的两倍。但仅限于第一次这样的声明。 我不明白 ORACLE manual 中出现这种行为的原因
CREATE TABLE test_table(a INT);
CREATE SEQUENCE seqa START WITH 10;
CREATE SEQUENCE seqb START WITH 10;
INSERT INTO test_table VALUES(seqb.NEXTVAL);
INSERT INTO test_table VALUES(seqb.NEXTVAL);
SELECT * FROM test_table;
生成的测试表:
A
-----
11
12
而:
SELECT seqa.NEXTVAL FROM DUAL; -- returns 10
最佳答案
这不会发生在我身上(在 Oracle 12C 上):
SQL> CREATE TABLE test_table(a INT);
Table created.
SQL> CREATE SEQUENCE seqa START WITH 10;
Sequence created.
SQL> CREATE SEQUENCE seqb START WITH 10;
Sequence created.
SQL> INSERT INTO test_table VALUES(seqb.NEXTVAL);
1 row created.
SQL> INSERT INTO test_table VALUES(seqb.NEXTVAL);
1 row created.
SQL> SELECT * FROM test_table;
A
----------
10
11
关于database - oracle中的sequence.nextval似乎增加了两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27862637/