Почему недавно вставленная строка отображается вверху таблицы в oracle databse 12c..?

Прежде чем я работал с MS SQL Server и недавно перешел на Oracle.

Я создал приложение Java, которое вставляет данные в таблицу оракулов, но вставляет данные, отображаемые вверху таблицы, а не внизу и не как SQL Server. Я хочу вставить его внизу таблицы. Как я могу это сделать..?

Пожалуйста, обратитесь к этому скриншоту. Как вы можете видеть, пользовательская таблица состоит из идентификатора пользователя, который автоматически увеличивается на Java-приложение.

Я знаю, как сортировать данные с помощью SQL-разработчика, но мне нужно исправить этот стиль сохранения по умолчанию, потому что приложение, которое я создал, принимает "U002" в качестве последней записи.

2 ответа

Ну, простая структура таблицы - это куча. Если вы создаете таблицу и не указываете ее тип - это общая таблица кучи. Это означает, что новые строки могут быть вставлены в любое свободное табличное пространство (правда, есть некоторые правила, но теперь мы можем об этом забыть). Это означает, что вы не можете предсказать, где будут новые строки в результате выбора без упорядочения. Если вы хотите отсортировать результат, вы должны указать порядок по предложению.

select * 
  from user_tbl 
 order by userid

Просто простой пример, чтобы увидеть тат, вы не можете иметь заказ без ORDER:

SQL> create table unsortedTable(a number, b varchar2(1000));

Table created.

SQL> insert into unsortedTable
  2  select level, lpad('X', 1000, 'X')
  3  from dual
  4  connect by level <=10;

10 rows created.

SQL> delete unsortedTable where a between 4 and 5;

2 rows deleted.

SQL> insert into unsortedTable
  2  select -level, lpad('Y', 1000, 'Y')
  3  from dual
  4  connect by level <=4;

4 rows created.

SQL> select a, substr(b, 1, 5)
  2  from unsortedTable;

         A SUBSTR(B,1,5)
---------- --------------------
         1 XXXXX
         2 XXXXX
         3 XXXXX
         6 XXXXX
         7 XXXXX
        -1 YYYYY
        -2 YYYYY
         8 XXXXX
         9 XXXXX
        10 XXXXX
        -3 YYYYY
        -4 YYYYY

12 rows selected.

SQL>

Та же последовательность операций, добавив /*+ append */ намек на второе insert заявление даст:

SQL> select a, substr(b, 1, 5)
  2  from unsortedTable;

         A SUBSTR(B,1,5)
---------- --------------------
         1 XXXXX
         2 XXXXX
         3 XXXXX
         6 XXXXX
         7 XXXXX
         8 XXXXX
         9 XXXXX
        10 XXXXX
        -1 YYYYY
        -2 YYYYY
        -3 YYYYY
        -4 YYYYY

12 rows selected.

Обратите внимание, что это НЕ означает, что APPEND дает вам надежный способ или порядок.

Другие вопросы по тегам