Date sent: Thu, 10 May 2001 17:43:57 +0200
From: "eddy palisse" <eddy.palisse1@worldonline.fr>
To: java@u-strasbg.fr
Copies to: Organization: WorldOnline.-.http://www.worldonline.fr/@isis.u-strasbg.fr
Subject: Clé primaire - JDBC - Java
Send reply to: java@u-strasbg.fr
Bonjour,
Je travaille avec une base FrontBase.
Dans cette base, j'ai une table.
Cette table a plusieurs champs, dont le champ "id" qui est la "primary
key".
Quand dans mon programme Java, j'insère un enregistrement dans cette
table, j'ai besoin de connaître l'id.
Comment faire pour gérer l'auto-incrémentation de mon "id" ?
Eddy.
____________________________
http://www.worldonline.fr/
Date sent: Thu, 10 May 2001 22:47:35 +0200
From: ..
To: java@u-strasbg.fr
Copies to: java@u-strasbg.fr,
Organization:WorldOnline.-.http://www.worldonline.fr/@isis.u-strasbg.fr
Subject: Re: Clé primaire - JDBC - Java
Send reply to: java@u-strasbg.fr
>Bonjour,
>
>Je travaille avec une base FrontBase.
>
>Dans cette base, j'ai une table.
>
>Cette table a plusieurs champs, dont le champ "id" qui est la "primary
>key".
>
>Quand dans mon programme Java, j'insère un enregistrement dans cette
>table, j'ai besoin de connaître l'id.
>
>Comment faire pour gérer l'auto-incrémentation de mon "id" ?
>
>Eddy.
>
>____________________________
> http://www.worldonline.fr/
>
Salut,
Je suppose que ta table contient des enregistrements avec un ensemble
d'entier discret pour les clefs (2, 5, 9, 55, etc).
La meilleure solution (à mon avis) est d'insérer un nouvel
enregistrement dans la table avec un numéro de clé supérieur à tous
les autres (pas de risque de collision).
Deux solutions :
- Soit garder la valeur maximale de id en dur et faire ++id au moment de
l'insertion - Effectuer une recherche du maximum dans la table (coûteux :(
) à
chaque nouvelle insertion (si tu disposes pas du max).
--
..
Maîtrise Informatique - Université Bordeaux I
Date sent: Fri, 11 May 2001 08:45:07 +0200
From: Eric Lepicier <lepicier@shom.fr>
To: java@u-strasbg.fr
Subject: Re: Clé primaire - JDBC - Java
Send reply to: java@u-strasbg.fr
eddy palisse wrote:
>
> Bonjour,
> Je travaille avec une base FrontBase.
> Dans cette base, j'ai une table.
> Cette table a plusieurs champs, dont le champ "id" qui est la "primary
> key". Quand dans mon programme Java, j'insère un enregistrement dans
> cette table, j'ai besoin de connaître l'id. Comment faire pour gérer
> l'auto-incrémentation de mon "id" ?
>
> Eddy.
> ____________________________
> http://www.worldonline.fr/
Bonjour,
Je ne connais pas FrontBase, mais sous Oracle par exemple, il existe
la notion de sequence, chargee de fournir des identifiants a suivre ...
C'est une sorte de table particuliere qui maintient un numero, a chaque
fois qu'on le demande, il est incrementepar le SGBD. Peut etre une piste
... --
__"__ Email from a friend: "CanYouFixTheSpaceBarOnMyKeyboard?"
(_.)_.)
-ooOO--(_)--OOoo---- Eric LEPICIER - EPSHOM / BREST / FRANCE
----------------
Date sent: Fri, 11 May 2001 09:05:55 +0200 (MEST)
From: Pascal Nicolas <pn@info.univ-angers.fr>
To: <java@u-strasbg.fr>
Subject: Re: Clé primaire - JDBC - Java
Send reply to: java@u-strasbg.fr
On Thu, 10 May 2001, eddy palisse wrote:
> Bonjour,
>
> Je travaille avec une base FrontBase.
>
> Dans cette base, j'ai une table.
>
> Cette table a plusieurs champs, dont le champ "id" qui est la "primary
> key".
>
> Quand dans mon programme Java, j'insère un enregistrement dans cette
> table, j'ai besoin de connaître l'id.
>
> Comment faire pour gérer l'auto-incrémentation de mon "id" ?
C'est un pb de SGBD, pas de java. Il faut d'abord déterminer comment faire
cela avec FrontBase (moi je n'en sais rien) et ensuite incorporer les
bonnes requêtes sql dans le java. Peut-être que FrontBase dispose d'un
système comme pour mysql ou posgresql.
GROSSO MODO :
En mysql il y a la notion de champ "autoincrémentable". par exemple pour
une table T(clé autoincrementable, nom char) il suffit de ne pas spécifier
la clé lors de l'insertion insert into T (nom) values ("toto") et le sgbd
va créér de lui même une clé = max(clé) + 1
En postgresql, on crée une séquence qui est un générateur de nombres
distincts. A chaque appel à cette séquence, le sgbd retourne un n° égale
au dernier + 1. Il suffit de servir de ce nombre comme nouvelle clé pour
chaque insertion dans la table.
Si FrontBase ne sait pas fiare cela, il y a la manip de récupérer la plus
grande clé actuelle et de l'incrémenter. Mais c'est dangereux à cause des
accès concurrents. 2 applis peuvent demander au même moment le max, elles
reçoivent toutes les 2 le nombre N. Et du coup vont faire l'insertion avec
la même clé. Là le sgbd va crier pour la 2ème insertion. Une solution est
alors de retenter l'insertion avec N+1, N+2,... jusqu'à ce que ça marche.
Mais ça c'est vraiment de la bidouille.
Désolé pour la digression hors java :-)
Pascal NICOLAS Universite d'ANGERS
E Mail : pascal.nicolas@univ-angers.fr
Web Page : http://www.info.univ-angers.fr/pub/pn/
Date sent: Fri, 11 May 2001 10:39:40 +0200
From: Jean-Baptiste BRIAUD <jean-baptiste.briaud@solsoft.fr>
Organization: SolSoft
To: java@u-strasbg.fr
Subject: Was : Clé primaire - JDBC - Java
Send reply to: java@u-strasbg.fr
Hello,
Cette question m'en pose une autre.
Je suis personnellement partisant d'utiliser des clé primaires
techniques, des id.
Je remarque souvent des réticences quant a la mise en oeuvre de ce
principe.
Par exemple on me reponds que sur la table PERSONNE, la clé primaire
serait
plutot le numéro de sécu ...
Bref, je rencontre des gens qui semble préférer des clé primaires
fonctionnelles.
Qu'ne pensez-vous ?
Quels sont les arguments pour et contre ?
--
_______________________________________________________
Jean-Baptiste BRIAUD Solsoft
software engineer http://www.solsoft.fr
Solsoft SA 130 rue Victor Hugo 92300 Levallois-Perret
"Policy Management for eBusiness Security"
From: Laurent Forêt <l.foret@korom.net>
To: <java@u-strasbg.fr>
Subject: RE: Was : Clé primaire - JDBC - Java
Date sent: Fri, 11 May 2001 11:35:19 +0200
Send reply to: java@u-strasbg.fr
Bonjour,
je ne sais pas si c'est légal d'identifier une personne par son numèro de
sécu(lois informatiques et libertés). A confirmer, mais si quelqu'un a
plus d'infos à ce sujet, je suis preneur (hors liste car ca commence à
être off topic).
En tout cas je suis pour le fonctionnel. C'est plus facile à gérer, et
l'autoincrémentation lors de nouveaux enregistrement élimine beaucoup de
tracas d'intégrité de la base. Mais on est encore Off topic.
-------------------------------------
Laurent Forêt
Service développement
l.foret@korom.net
www.korom.net
> -----Message d'origine-----
> De : briaud@solsoft.fr [mailto:briaud@solsoft.fr]De la part de
> Jean-Baptiste BRIAUD
> Envoyé : vendredi 11 mai 2001 10:40
> À : java@u-strasbg.fr
> Objet : Was : Clé primaire - JDBC - Java
>
>
> Hello,
>
> Cette question m'en pose une autre.
> Je suis personnellement partisant d'utiliser des clé primaires
> techniques, des id.
>
> Je remarque souvent des réticences quant a la mise en oeuvre de ce
> principe.
> Par exemple on me reponds que sur la table PERSONNE, la clé primaire
> serait plutot le numéro de sécu ...
>
> Bref, je rencontre des gens qui semble préférer des clé primaires
> fonctionnelles.
>
> Qu'ne pensez-vous ?
>
> Quels sont les arguments pour et contre ?
>
>
>
> --
> _______________________________________________________
> Jean-Baptiste BRIAUD Solsoft
> software engineer http://www.solsoft.fr
>
> Solsoft SA 130 rue Victor Hugo 92300 Levallois-Perret
> "Policy Management for eBusiness Security"
>
>