我用php向oracle中插入记录,但是插入到oracle中后,记录的前后次序和我插入的顺序不一样.怎么才能和我的插入的顺序一样?
环境:win2003+apache2+php4.2+oracle9.0
我用php向oracle中插入记录,但是插入到oracle中后,记录的前后次序和我插入的顺序不一样.怎么才能和我的插入的顺序一样?
比如:
我插入18个记录,用ctxsys.dr_id_seq.nextval来生成自动增量id. id分别是1781,1779,1780,1782,1783,1549,1550,1558,1559,1560,1562,1564,1568,1569,1784,1742,1570,1571(注:整个站点都用ctxsys.dr_id_seq.nextval来生成自动增量,所以自动增量可能不连续),发生奇怪的事,18条记录的在oracle中顺序并不是以id从小到大的排列,而是1781,1779,1780,1782,1783,1549,1550,1558,1559,1560,1562,1564,1568,1569,1784,1742,1570,1571,乱七八糟,没有规律的顺序.这是为什么?与整个站都用ctxsys.dr_id_seq.nextval来生成自动增量有关吗?
怎么让记录在oracle中存放时按插入的顺序,依次排列?
问题点数:88、回复次数:5Top
1 楼ATCG(novel gene)回复于 2003-11-03 13:05:04 得分 20
这个好像不行,因为ORACLE是按照数据块随机分配存储空间的,所以记录顺序一般只有通过排序来实现Top
2 楼bzszp(SongZip)回复于 2003-11-03 13:15:44 得分 20
因为新插入的数据可能存放在以前删除数据后留出的空间里面
只能通过order by colname来排序
Top
3 楼qiyousyc(沈阳棋友)回复于 2003-11-03 13:26:14 得分 18
你不可能控制oracle的记录的物理存放地址,
除非你在select时用order by 主键排序Top
4 楼xieqi(飞火流星)回复于 2003-11-08 11:38:09 得分 0
mssql就是连续的,奇怪。新增的记录永远在最下面,即使前面删除过记录,但还是从小到大,依次排列的。
Top
5 楼bzszp(SongZip)回复于 2003-11-08 11:42:55 得分 30
一般情况下,oracle的也是连续的
如果重用了以前使用过的数据块,就会出现问题了Top




