Ber*_*ard 1 sql oracle oracle11g
首先,我使用jdbc驱动程序在java中运行所有这些...
在这里我定义一个表:
create table HistoryCCP(
ID NUMBER(6) NOT NULL,
SCRIPT VARCHAR2(1000) NOT NULL
)
Run Code Online (Sandbox Code Playgroud)
在这里我定义一个序列:
CREATE SEQUENCE SYSTEM.HistoryId
MINVALUE 1
MAXVALUE 1000000
INCREMENT BY 1
START WITH 1
NOORDER
NOCYCLE
Run Code Online (Sandbox Code Playgroud)
现在我在这里使用这个插入表:
insert into HistoryCCP
values (SYSTEM.HistoryId.nextval ,'HELLOOOO ')
Run Code Online (Sandbox Code Playgroud)
每当我关闭程序并再次运行并尝试插入时,它会将其递增10!当我定义这样的序列时:
CREATE SEQUENCE SYSTEM.HistoryId
MINVALUE 1
MAXVALUE 1000000
INCREMENT BY 1
START WITH 1
CACHE 100 -- added cache parameter
NOORDER
NOCYCLE
Run Code Online (Sandbox Code Playgroud)
它增加了100!你知道它为什么会这样,以及如何将它增加1?
永远不要依赖序列进行无间隙编号.
缓存值是数据库服务器在内存中保存的序列值的数量,以避免使用最近使用的值继续更新其内部$ SEQ表.如果减小缓存值,则会增加必须修改$ SEQ表的速率,这会降低系统的速度.
缓存的值可以老化,并在系统重新启动时丢失,并且如果事务回滚,则不会重用值.
间隙的存在对您来说不应该是一个问题 - 如果是,那么您将需要使用序列之外的其他内容来生成数字,这样做会将插入序列化到该表.
| 归档时间: |
|
| 查看次数: |
467 次 |
| 最近记录: |