Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1650 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Prochaine valeur de la clée primaire

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Prochaine valeur de la clée primaire

n°1762799
polo7
Posté le 21-07-2008 à 20:02:46  profilanswer
 

Bonjour,
Est-il possible d'obtenir d'une table la valeur de la clée primaire du prochain enregistrement ?
Ce n'est pas n+1 si on supprime des enregistrements avant.

mood
Publicité
Posté le 21-07-2008 à 20:02:46  profilanswer
 

n°1762823
cvb
Posté le 21-07-2008 à 23:05:19  profilanswer
 

Bonsoir,
 
Tout dépend si ta clé primaire est une valeur numérique ou non. Dans le cas d'un valeur numérique c'est n+1. n étant la dernière valeur. Les clés suprimés sont "perdus"...

n°1762969
MagicBuzz
Posté le 22-07-2008 à 11:31:02  profilanswer
 

cvb a écrit :

Bonsoir,
 
Tout dépend si ta clé primaire est une valeur numérique ou non. Dans le cas d'un valeur numérique c'est n+1. n étant la dernière valeur. Les clés suprimés sont "perdus"...


ouh là malheureux, faut pas affirmer des trucs comme ça :o
 
tout dépend du système utilisé pour générer les ID : type de données "numauto", séquence, traîtement manuel par trigger, etc.
 
selon les SGBD, les types de données "numauto" n'existent parfois pas, et parfois bouchent les trous ou non, et pas toujours de façon linéaire (genre il va commencer à boucher les trous une centaine d'insertions après la suppression). bref, y'a AUCUNE règle qui soit absolue, et surtout, ce qui est vrai dans une build particulière du SGBD ne le sera pas forcément dans la suivante. en effet, un numauto est un type 100% géré par le système, et un ID ne doit par définition pas avoir de signification fonctionnelle, donc se soucier de sa valeur n'a pas de sens d'un point de vue analyse.
 
pour les séquences, y'a pas de bouchage de trous, par contre il y a un pas (l'incrément n'est pas forcément de +1, il peut être de -24 par exemple) et les séquences peuvent boucler (et dans ce cas, ne bouchent pas les trous, elle génèrent des valeurs en repartant de 0 comme la première fois)
 
le traîtement manuel est donc le seul où tu peux à coup sûr prévoir le comportement, et c'est dans le seul cas qu'il faudra tenter de récupérer la prochaine valeur. ceci dit, c'est suicidaire dans la mesure où si deux personnes utilisent l'application en même temps, elles croiront toutes les deux pouvoir créer le même ID à un instant T, ce qui est faux.

n°1763315
cvb
Posté le 22-07-2008 à 17:19:56  profilanswer
 

MagicBuzz a écrit :


ouh là malheureux, faut pas affirmer des trucs comme ça :o
 
tout dépend du système utilisé pour générer les ID : type de données "numauto", séquence, traîtement manuel par trigger, etc.
 
selon les SGBD, les types de données "numauto" n'existent parfois pas, et parfois bouchent les trous ou non, et pas toujours de façon linéaire (genre il va commencer à boucher les trous une centaine d'insertions après la suppression). bref, y'a AUCUNE règle qui soit absolue, et surtout, ce qui est vrai dans une build particulière du SGBD ne le sera pas forcément dans la suivante. en effet, un numauto est un type 100% géré par le système, et un ID ne doit par définition pas avoir de signification fonctionnelle, donc se soucier de sa valeur n'a pas de sens d'un point de vue analyse.
 
pour les séquences, y'a pas de bouchage de trous, par contre il y a un pas (l'incrément n'est pas forcément de +1, il peut être de -24 par exemple) et les séquences peuvent boucler (et dans ce cas, ne bouchent pas les trous, elle génèrent des valeurs en repartant de 0 comme la première fois)
 
le traîtement manuel est donc le seul où tu peux à coup sûr prévoir le comportement, et c'est dans le seul cas qu'il faudra tenter de récupérer la prochaine valeur. ceci dit, c'est suicidaire dans la mesure où si deux personnes utilisent l'application en même temps, elles croiront toutes les deux pouvoir créer le même ID à un instant T, ce qui est faux.


 
C'est bien pour ça que j'ai précisé valeur numérique  ;)  
j'ai oublié numéro auto, pour être  tout à fait exact :)

n°1763354
polo7
Posté le 22-07-2008 à 19:23:58  profilanswer
 

ouais, en fait le id est en autoincrément de MySQL et je souhaitais insérer un enregistrement et inclure dans un autre champ l'id de l'enregistrement lui même.
Mais est-ce possible ?

n°1763358
MagicBuzz
Posté le 22-07-2008 à 19:40:49  profilanswer
 

non.
 
(et je vois pas du tout à quoi ça va te servir)
 
au pire, t'as une fonction qui permet de récupérer le dernier ID. donc tu fais un update dans la foulée.
 
ou tu peux tenter avec un trigger, mais c'est loin d'être sûr que la valeur du numauto soit déjà connue au moment de l'insertion.

n°1763385
polo7
Posté le 22-07-2008 à 20:26:46  profilanswer
 

ça me sert à renommer un fichier et d'y inclure son id dans le nom du fichier, de cette manière, avec le fichier seul, je peux connaître sa référence !
trigger, j'ai regardé, mais il semble pas, c'est new sur MySQL

n°1763486
MagicBuzz
Posté le 23-07-2008 à 00:10:27  profilanswer
 

nan mais surtout, si t'as déjà une colone ID, à quoi ça sert d'avoir une seconde colonne qui prend la même valeur ?

n°1763563
polo7
Posté le 23-07-2008 à 09:52:11  profilanswer
 

c'est pas une seconde colonne, la seconde colonne contient le nom d'un fichier et ce nom est composé du N° de catégorie, N° ID et autre.

n°1763582
MagicBuzz
Posté le 23-07-2008 à 10:36:06  profilanswer
 

c'est donc un champ calculé, il n'a pas à être stocké

mood
Publicité
Posté le 23-07-2008 à 10:36:06  profilanswer
 

n°1763644
polo7
Posté le 23-07-2008 à 12:01:57  profilanswer
 

oui, il y a redondance, mais je préfère par sécurité perso.

n°1764204
HappyHarry
Posté le 24-07-2008 à 13:34:38  profilanswer
 

oui
 
mais non


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Prochaine valeur de la clée primaire

 

Sujets relatifs
Lecture fichier en binaire et valeur en hexa[Perl ou Java?] Comment cacher la valeur d'un attribut dans du XML
Véritable valeur aléatoirerécupérer la valeur d'une colonne maj avec update
Valeur touche clavier[Access/VBA] Récupération valeur
Valeur par defaut et heritage + methode virtuelleListe deroulante php selection de la plus recente valeur ( date )
Récupérer la valeur de IDENTITY avant insertiontransmettre une valeur
Plus de sujets relatifs à : Prochaine valeur de la clée primaire


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR