ITPub博客

首页 > 数据库 > Oracle > 自递增序列的并行问题(是本身机制还是设计有误)?

自递增序列的并行问题(是本身机制还是设计有误)?

原创 Oracle 作者:fengxue 时间:2007-02-28 14:07:57 0 删除 编辑
自递增序列的并行问题(是本身机制还是设计有误)?[@more@]自递增序列的并行问题
有一个项目,我们需要的是在插入一个字段的时候,字段ID自动递增,
表的结构如下


ID NO
----- -------


都是int字段

序列如下
CREATE SEQUENCE seq_mikzi
INCREMENT BY 1
START WITH 1
NOMAXVALUE
NOCYCLE
NOCACHE
ORDER;

触发器如下
create or replace trigger trig_mikzi
before insert on mikzi
referencing old as old new as new for each row
begin
select Seq_mikzi.nextval into :new.ID from dual;
end;

并行输入:
A用户
insert into mikzi(no) values(1);

B用户
insert into mikzi(no) values(2);

A用户
insert into mikzi(no) values(3);

B用户
insert into mikzi(no) values(4);

结果为

SQL> select * from mikzi;

ID NO
---------- ----------
1 1
3 3
2 2
4 4

如何设计才能在查询的时候为
ID NO
---------- ----------
1 1
2 2
3 3
4 4

因为可能每次order by消耗不少啊。

我用过很多种方法,一直不能解决,因为在SQL_SERVER中,使用自增字段建立得表格天生就是自动排序好得,不用在order by id了
而Oracle查询就顺序就乱了,这是本身Oracle机制问题还是我设计有误呢?
如果解决呢?
输入一次确认一次是没有用得。
不用sequence,单独用trigger也是不行,怎么解决呢?

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/19622/viewspace-900901/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论
  • 博文量
    4
  • 访问量
    4290