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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Récupérer la valeur de IDENTITY avant insertion

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Récupérer la valeur de IDENTITY avant insertion

n°1748894
Goro-Kun
Posté le 19-06-2008 à 14:50:01  profilanswer
 

bonjour,
j'ai une table sous SQL Server contenant un champ id_employe IDENTITY. Donc ce champ s'incrémente automatiquement.
Après insertion, il suffit de faire SELECT @@IDENTITY pour avoir la valeur du dernier champ id_employe inséré.
 
Mais comment faire pour connaître la valeur que prendra le prochain champ id_employe ? Est-ce possible ?  
merci de votre aide.

mood
Publicité
Posté le 19-06-2008 à 14:50:01  profilanswer
 

n°1748975
MagicBuzz
Posté le 19-06-2008 à 16:32:04  profilanswer
 

j'en doute. si tu veux savoir (donc gérer) la prochaine valeur, tu ne dois pas passer par le type identity... qui est là pour se gérer tout seul, et donc t'es pas censé le connaître
 
ps : utilise scope_identity() le @@identity n'est absolument pas safe ! (le jour où t'as un trigger sur ta table, ça te retournera pas la bonne valeur)


Message édité par MagicBuzz le 19-06-2008 à 16:33:02
n°1748982
MagicBuzz
Posté le 19-06-2008 à 16:34:26  profilanswer
 

si tu veux utiliser un type qui ne génère pas de collisions pour une PK, utiliser le type GUID (Globally Unique IDentifier)
 
tu le génères depuis ton programme avant de faire l'insertion, et pas de souci, ça 1 chance sur quelque chose comme le nombre d'atomes sur la terre de provoquer une collision.
-- Edit : Même pas en fait, puisque dans les dernières version la date est stockée dans le chiffre, ce qui voudrait dire que tu génères 2^(128-6-60-1) GUID dans l'espace de 100 nanosecondes pour atteindre la demi-vie ^^
 
Y porte pas son nom pour rien, c'est juste une valeur aléatoire parmi [0-2^128[
En réalité, 122 sont réellement recaclulés à chaque fois (6 pour la version et la variante) et 60 pour le timestamp qui a une précision de 100 nanosecondes (ou alors des valeurs aléatoires, ça dépend de la version utilisée en fait)
Par contre c'est chiant à taper au clavier, ça ressemble à ça :D
{3F2504E0-4F89-11D3-9A0C-0305E82C3301}
 
RFC
http://tools.ietf.org/html/rfc4122


Message édité par MagicBuzz le 19-06-2008 à 16:49:07
n°1748987
Goro-Kun
Posté le 19-06-2008 à 16:39:09  profilanswer
 

ok merci.
pour le type GUUID, je verrai, mais ça risque d'être difficile car ma base est déja bien remplie, et l'application est déjà avancée.
je change aussi le @@identity, j'ignorais que c'était déconseillé.


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

  Récupérer la valeur de IDENTITY avant insertion

 

Sujets relatifs
transmettre une valeurRécuperer la valeur d'une cellule définie
{VBS} Comment recuperer les permissions NTFS d'un Share ?[Résolu] Récupere la valeur d'un Select
Récuperer types composites en MYSQL/PHPrecuperer info cellule
Valeur non renseignée dans un tableau 1 dim Matlab [Resolu]Récupérer des informations à partir d'une url ?
masquage erreur #valeur sous VBA Excel 
Plus de sujets relatifs à : Récupérer la valeur de IDENTITY avant insertion


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