Précédent   Forum des professionnels en informatique > Bases de données > Sybase
Sybase Forum sur la base de données Sybase. Avant de poster -> F.A.Q Sybase, Tutoriels Sybase
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/10/2006, 17h08   #1
Candidat au titre de Membre du Club
 
Inscription : janvier 2005
Messages : 79
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 79
Points : 13
Points : 13
Par défaut [ASE12.5]generation d'id unique

Bonjour,

Je suis en train de mettre en place une solution de persistence avec hibernate en java et jai besoin d'un algorithme de generation d'id unique pour le format binary(12), qui decrit tous mes champs d'id. Je ne peux malheureusement pas transformer mes champs.

Connaissez vous de tels algorithmes ?

merci beaucoup
frouge est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2006, 08h11   #2
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
ASE 12.5 a une fonction newid() qui peut servir à cela, mais malheureusement cette fonction retourne une chaine de 32 octets hexa (soit binary(16)).

Solution bête et méchante:

Code :
1
2
3
4
5
6
7
8
9
 
CREATE TABLE newid (id numeric(18, 0) identity, dummy int)
 
-- avant d'insérer une ligne dans la table avec le champ binary(12) on insert
-- une ligne bidon dans newid, et on récupère la valeur de @@identity
 
INSERT newid (dummy) VALUES(0)
SELECT @newid = @@identity
INSERT ma_table ... VALUES(convert(varbinary(12), @newid), ...)
cela va évidemment créer des problème d'accès concurrents (hotspot sur la table newid), et il faudra régulièrement purger la table newid (les données dedans ne nous interessent évidemment pas), mais suivant le volume cela pourrait marcher...

Michael
__________________
Michael Peppler
Membre de TeamSybase - www.teamsybase.com

"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2006, 10h20   #3
Candidat au titre de Membre du Club
 
Inscription : janvier 2005
Messages : 79
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 79
Points : 13
Points : 13
salut, merci pour ta reponse cela peut etre interessant mais que fait precisement la fonction convert ? N'y a-t-il pas une perte d'information dans la conversion ?

thanks
frouge est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2006, 12h22   #4
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
Non, le convert() va convertir le nombre dans sa représentation binaire. C'est nécessaire pour pouvoir insérer le nombre (@@identity) dans le champs binary(12) de la table.

Michael
__________________
Michael Peppler
Membre de TeamSybase - www.teamsybase.com

"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h31.


 
 
 
 
Partenaires

Hébergement Web