Целочисленный тип данных машины Oracle - PullRequest
0 голосов
/ 21 июня 2011

Есть ли в Oracle тип данных, который я могу иметь в таблице, которая является целым числом машины? Я просто хочу использовать это как уникальный идентификатор, и мне не нужно, чтобы столбец обнулялся.

Я заметил, что INTEGER тип данных отображается на NUMBER(38), что превышает 20 байтов.

Ответы [ 2 ]

2 голосов
/ 21 июня 2011

В настоящее время в Oracle нет типа данных, который будет храниться как целое число компьютера (C int?).Числа Oracle хранятся в виде строк байтов переменной длины:

SQL> SELECT DUMP(99), DUMP(999999), DUMP(9999.99) FROM dual;

DUMP(99)             DUMP(999999)                 DUMP(9999.99)
-------------------- ---------------------------- ----------------------------
Typ=2 Len=2: 193,100 Typ=2 Len=4: 195,100,100,100 Typ=2 Len=4: 194,100,100,100

Первый байт хранит масштаб, остальные байты - это базовое представление числа 100.

Некоторое пространство потерянос этим методом хранения, но, в конечном счете, большую часть времени накладные расходы будут незаметны.

Для столбца с менее чем 10 миллиардами идентификаторов вы можете использовать NUMBER (10), который займет максимум 6 байтов.

0 голосов
/ 21 июня 2011

Как насчет Универсального уникального идентификатора (UUID) ?

CREATE table test 
(
    colguid RAW(16) default SYS_GUID() 
) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...