IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Sybase Discussion :

[ASE12.5]generation d'id unique


Sujet :

Sybase

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 79
    Points : 43
    Points
    43
    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

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 79
    Points : 43
    Points
    43
    Par défaut
    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

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    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

Discussions similaires

  1. [1.x] Champ unique et admin generator
    Par shakly dans le forum Symfony
    Réponses: 4
    Dernier message: 16/09/2011, 23h40
  2. Generation d'un id unique.
    Par ujoodha dans le forum Langage
    Réponses: 5
    Dernier message: 07/12/2006, 14h43
  3. Génération de code
    Par YAMKI dans le forum Rational
    Réponses: 5
    Dernier message: 22/04/2003, 16h41
  4. Suppression de la contrainte unique
    Par mika dans le forum SQL
    Réponses: 3
    Dernier message: 20/02/2003, 17h56
  5. Generation d'evenements a une date precise
    Par pascalzzz dans le forum MFC
    Réponses: 2
    Dernier message: 04/06/2002, 15h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo