Pet*_*ang 11 oracle sequence oracle11g
意外行为:
我遇到了11g的Oracle序列的奇怪行为(适用于10g):
CREATE SEQUENCE test_sequence START WITH 1;
CREATE TABLE test_table ( val INT );
INSERT INTO test_table VALUES ( test_sequence.NEXTVAL );
Run Code Online (Sandbox Code Playgroud)
即使序列以1开头,插入的第一个值为2:
SELECT * FROM test_table;
VAL
----------
2
Run Code Online (Sandbox Code Playgroud)
预期行为:
NEXTVAL
没有插入的选择按预期工作:
CREATE SEQUENCE test_sequence_2 START WITH 1;
SELECT test_sequence_2.NEXTVAL FROM dual
NEXTVAL
----------
1
Run Code Online (Sandbox Code Playgroud)
题:
任何人都可以使用Oracle 11g重现这一点吗?这是一个已知的问题?
我正在使用
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
.
Lei*_*fel 16
这在11.2 SQL语言参考中有记录,它说,
如果尝试将序列值插入到使用延迟段创建的表中,则将跳过序列返回的第一个值.
请参阅Jeffrey Kemp关于My Oracle Support(Metalink)注释和解决方法的答案中的链接.
我说原因是这个"无证件".请参阅My Oracle Support Document ID 1273858.1(遗憾的是,它位于付费专区后面,无法在此处复制).
在没有延迟段创建的情况下尝试它,看看问题是否仍然存在.
归档时间: |
|
查看次数: |
7843 次 |
最近记录: |