2010-04-15 3 views
0

J'ai une table avec 42 millions d'enregistrements. 32 millions ont une valeur nulle et je voudrais générer un nouveau guid pour chacun d'eux. Dois-je le faire par lots?Génération automatique de Guids dans Sybase

Aussi, à l'avenir, je voudrais un nouveau guid ajouté au champ sur l'insertion d'un nouvel enregistrement. Quelle est la meilleure façon de procéder?

Le champ n'est pas la clé primaire, qui est un entier auto-incrémenté.

Répondre

0

Avez-vous essayé un déclencheur d'insertion?

+0

Merci @Carly. Oui, je n'ai que +1 pour votre réponse, puisque vous êtes un nouvel utilisateur. –

0

Il existe une fonction newid() pour générer un guid. Votre colonne doit être varchar (32) (ou varbinary (16)) ou plus grande. Vous devez exécuter la mise à jour par lots pour éviter de remplir le journal des transactions par exemple

set rowcount 10000 
while exists (select 1 from mytab where myid is null) 
    update mytab set myid = newid() where myid is null 
set rowcount 0 

Vous n'avez pas besoin d'un déclencheur - il suffit de lier la fonction par défaut de la colonne. Il y a un exemple dans les docs Sybase.

Questions connexes