Bonjour,
Je cherche juste comment définir le champ de clé primaire comme auto-incrémentation. Est-ce que quelqu'un est au courant ?
Harry Potter
Bonjour,
Je cherche juste comment définir le champ de clé primaire comme auto-incrémentation. Est-ce que quelqu'un est au courant ?
Harry Potter
De memoire avec certaines bases, type access tu peux selectionner cette option "auto increment" avec sql je n'ai pas trouve ce genre de choses. J'avais du le gerer moi meme en recuperant la valeur la plus elevee de ma cle et au moment de mon insertion passer en parametre la valeur de la cle + 1....
C'est pas bien long a faire, ca demande 5 lignes de codes de plus.
J'espere avoir repondu a ta question
@+
...houla, pas bieeeeen...recuperant la valeur la plus elevee de ma cle et au moment de mon insertion passer en parametre la valeur de la cle + 1
En sql server, tu vas en mode design, tu mets Identity a yes, Identity seed a 1 et increment a 1...
pis ca y'est, tu as ton auto-incrementation...
apres, en Oracle, tu dois faire des triggers, si je me rappelle bien...mais dans l'ensemble, tu dois avoir moyen de faire ca sur toutes les sgbd![]()
Une remarque générale sur les champs auto-incrémentés : je comprends qu'on l'utilise si on en a absolument besoin, mais, dans l'absolu c'est rare.
Personnellement, surtout si le SGBD cible du projet est Sql Server, je n'utilise presque jamais de champs auto-incrémentés et préfére utiliser en clef primaire pour ce type de cas un champs "uniqueidentifier" (dans lequel on stocke un GUID).
Le seul inconvénient de cette méthode est l'impossibilité d'utiliser ce champs dans une clause ORDER ou dans un sort pour lister les entrées créées dans l'ordre où elles l'ont été, mais un champs Timestamp ou date/time en plus sur la table permet de contourner le problème.
L'avantage que présente l'utilisation de l'uniqueidentifier est que l'on peut instancier l'objet métier qui sera ensuite écrit "as is" dans la base sans avoir à s'occuper de concurence d'accés, et sans avoir à récupérer une information "a posteriori" (donc, on peut ensuite confier la tâche de persistance en mode "lazzy" à une entité applicative, sans avoir à réinterroger cette entité applicative pour savoir la valeur qu'aura prise la clef primaire).
Attention : je ne dis pas qu'il ne faut jamais utilisé les séquences/champs auto-incrémentés, etc ... mais simplement qu'ils ne constituent pas toujours la solution la plus simple même si elle saute (un peu trop souvent à mon goût) aux yeux comme solution évidente.
Partager