2010-02-17 1 views

Répondre

6

Vous pouvez utiliser SYS_GUID() pour générer un GUID, et l'utiliser comme valeur par défaut d'une colonne:

CREATE TABLE test_table (
    uid_col RAW(32) DEFAULT SYS_GUID(), 
    some_val VARCHAR2(10) 
); 

EDIT: Voir les réponses à this question pour plus de détails.

+0

Vous devez également coder un déclencheur pour vous assurer que RAW (32) fourni par l'utilisateur ou l'application n'a pas été fourni, sinon vous pourriez être sujet à des collisions de clés. Même cela n'est pas totalement certain, car les déclencheurs peuvent être désactivés et certaines applications (comme SQL * Loader en mode chemin direct) peuvent ignorer complètement les déclencheurs. Je ne dis pas que la solution de Peter n'est pas la meilleure disponible; juste que Oracle ne permet pas vraiment complètement les clés générées par le système. –

+0

Cela ne suffit pas, vous devez ajouter une contrainte de clé primaire sur la colonne 'uid_col' pour maintenir l'unicité des valeurs. – ThinkJet

+1

[Exemple SQLFiddle] (http://sqlfiddle.com/#!4/1c4d6/1) – ThinkJet

-1

Rendre le type de données de la colonne char ou varchar2 sur-raw pour passer les problèmes futurs.

+0

Je crois que vous devriez fournir une explication de comment cela aidera avec les problèmes futurs. –

Questions connexes