2011-06-21 12 views
0

マシンの整数であるテーブルにOracleのデータ型がありますか?私は一意の識別子としてこれを使用したいだけで、カラムをnullにする必要はありません。Oracleマシンの整数データ型

INTEGERのデータ型がNUMBER(38)(20バイトを超える)にマップされています。

答えて

0

Universal Unique Identifier (UUID)についてはどうですか?

CREATE table test 
(
    colguid RAW(16) default SYS_GUID() 
) 
+0

私はそう思っていますが、実際にはここで32ビットしか必要ありません。 40億は十分です。 – Clinton

2

現在、マシンの整数(C int?)として格納されるデータ型はOracleではありません。 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が格納されます。

この保存方法ではいくらかの領域が失われますが、最終的にはオーバーヘッドが目立たなくなります。

識別子が100億未満の列の場合、NUMBER(10)は6バイトまで使用できます。