oracle的序列号(sequence)
2017-07-09 12:24
796 查看
oracle的自增列,要采用序列号(sequence)。
初始化阶段要手动建立一个sequence,然后插入的时候,还要手动自己去读这个sequence的nextval赋给相关字段,如ID,麻烦的很。好处就是记录插入前,我们就知道这个ID值了,在处理主从表时,有时还比较方便。但这个对sql server来说,也不是问题,可以获得的。
oracle这个序列号,还有个高速缓存这么个东东,默认是一次性生成20个,没用完可能就丢了,可能造成ID不连贯。更有甚者,有时可能会引起误解。
好比说,我有个存储过程,里面用到了序列号。
然后这个存储过程,既可以手动执行,也可以托付给作业(JOB)执行。因为有高速缓存,作业都是先拿了20个,按照自己的节奏去插入;如果还记录时间戳的话,你会发现,怎么有些ID值小的,其执行时间却是最新的?原因即在此,ID与印象中的顺序不符合。
这样的话,ID就失去时间关联的参照属性了,还干脆使用GUID来做主键好了。GUID的话,表跨数据库都可以啊。但SQL SERVER中,好像就没有这个问题。
初始化阶段要手动建立一个sequence,然后插入的时候,还要手动自己去读这个sequence的nextval赋给相关字段,如ID,麻烦的很。好处就是记录插入前,我们就知道这个ID值了,在处理主从表时,有时还比较方便。但这个对sql server来说,也不是问题,可以获得的。
oracle这个序列号,还有个高速缓存这么个东东,默认是一次性生成20个,没用完可能就丢了,可能造成ID不连贯。更有甚者,有时可能会引起误解。
好比说,我有个存储过程,里面用到了序列号。
然后这个存储过程,既可以手动执行,也可以托付给作业(JOB)执行。因为有高速缓存,作业都是先拿了20个,按照自己的节奏去插入;如果还记录时间戳的话,你会发现,怎么有些ID值小的,其执行时间却是最新的?原因即在此,ID与印象中的顺序不符合。
这样的话,ID就失去时间关联的参照属性了,还干脆使用GUID来做主键好了。GUID的话,表跨数据库都可以啊。但SQL SERVER中,好像就没有这个问题。
相关文章推荐
- oracle中sequence序列号
- 在oracle中sequence就是所谓的序列号
- Oracle触发器详细 和 Oracle 创建序列号
- Oracle序列的(Sequence)使用
- 【Oracle学习】之 序列(Sequence)
- Oracle中sequence的使用方法
- Oracle中的序列sequence - 顺序生成seqid
- ORACLE(SEQUENCE)序列总结
- oracle-序列(SEQUENCE)
- DB2和Oracle查看系统的sequence
- Oracle 序列号当前值
- Oracle命令常见命令说明(comment on|sequence)
- 为什么oracle中,sequence增加,而数据却没有增加?
- oracle创建sequence
- oracle pl/sql 中创建序列号
- mysql实现oracle的sequence
- Oracle sql以某个汉字的字段的汉语拼音作为排序,java代码排序不能按要求显示序列号
- 在oracle中插入一条数据,id自动增长,插入之后怎么得到这个id(sequence的使用)
- MySql中实现类似Oracle的Sequence方案
- 查看Oracle当前用户下的主键、索引、sequence创建语句