【发布时间】:2016-10-14 14:30:00
【问题描述】:
应用程序在测试服务器和生产服务器上运行,两者都与 Oracle 11g DB 集成。
我注意到在将数据存储在表中时,测试服务器上有一些排序:
SELECT * FROM table1:
|ID-PK| FK1 |name|
| 100 | 50 | a1 |
| 101 | 50 | a2 |
| 102 | 50 | a3 |
当我在另一个数据库服务器上对同一个表执行相同的查询时,我得到了一些无序的结果:
SELECT * FROM table1:
|ID-PK| FK1 |name|
| 102 | 50 | a3 |
| 100 | 50 | a1 |
| 101 | 50 | a2 |
如何强制第二个数据库存储数据按 PK 排序?
插入的实体是由Java web-application(使用JPA)创建的,PK是按递增顺序生成的,所以后面创建的实体应该显示在表的末尾。
【问题讨论】:
-
使用
order by- 这是only(真的:only)在选择时获得定义顺序的方式。没有其他选择 -
您已经两次得到相同(正确)的答案,一次是在答案中,另一次是在评论中。您应该问的下一个问题是,“那为什么我要在第一个查询中按顺序获取行?我什么时候可以依赖它?”第一个问题的答案是“没关系”,第二个问题的答案是“从不”。只是把第一个查询结果当作侥幸;明天你甚至可能不会得到同样的行为。尝试添加 PK=95 的行(如果尚未使用),看看会发生什么!