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

自递增序列的并行问题(是本身机制还是设计有误)?[@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博客 ” ,链接:http://blog.itpub.net/19622/viewspace-900901/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/19622/viewspace-900901/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值