Почему недавно вставленная строка отображается вверху таблицы в 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
дает вам надежный способ или порядок.