|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2004 Messages : 40 ![]() |
Bonjour,
J'ai constaté sur un tutoriel qu'interbase ne possèderait pas de type de donnée "autoincrément". Je trouve cela plutot génant qu'en est il exactement?? Je me trompe? |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Oui alors qu'ACCESS lui en a un ?? devrait on rajouté à la question...
Bon je ne dis pas que l'un est mieux que l'autre. Mais si j'avais à défendre Interbase/firebird (et beaucoup d'autres SGBD professionnels). Un type de donnée sert à définir le type de données Sous Interbase pour faire l'équivalent d'un autoincrémenté il faut définir une colonne de type Integer (entier) et définir un générateur qui est le seul moyen d'optenir une valeur unique. Avant chaque insertion dans la table on va demander la valeur suivante au générateur et l'affecter à la colonne integer. Celà peut être fait également de manière automatique par un trigger before insert mais dans ce cas il ne faut pas que le client ait besoin de connaitre la valeur. En règle général on combine les deux méthodes, c'est a dire on cré un trigger before update qui va définir la valeur uniquement lorsque celle ci est à null. Ce qui permet soit de définir la valeur via le trigger soit par un appel au générateur et affectation directe depuis le client. |
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2004 Messages : 40 ![]() |
comme dans access... ou Mysql qui lui à l'avantage de retourner l'id généré après l'INSERT.
Après une petite reflexion j'en arrive à une conclusion, est elle vérifiée?? Les BdD qui ne gèrent pas les triggers ou les proc stockées ne seraient celles qui proposent le champ autoincrement?? Les éditeurs de produits "complets" considérant que l'admin est capable de gérer ses incrémentations d'Id tout seul. Qu'en pensez vous? |
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Citation:
Citation:
Mais peut être que si on ne trouve pas de autoincrément c'est que tout simplement ce type n'existe pas dans les normes SQLX Et en effet ceux qui n'ont pas de trigger/Générateur proposent une solution paliative avec les autoincrément. Mais bon il ne faut pas non plus se focaliser sur ça, gérer à la main une clé unique avec Interbase/Firebird est très simple et l'écriture du trigger se fait entièrement automatiquement avec certain mannager de base comme IBExpert ou IBMannager ou ... |
||
|
|
00
|
|
|
#5 | |
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2004 Messages : 40 ![]() |
Citation:
J'espère que vous ne m'en voudrez pas d'avoir parlé un peu longuement d'access. Merci Jf |
|
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Il n'y a pas de honte à utiliser Access.
Je l'utilise moi même pour diverses raisons : - Maintenance d'un existant. - Maquettage rapide - Tests divers Et en effet le probleme des auto incrément c'est qu'on ne maitrise pas tout vus que c'est automatique. Donc le coté bien c'est que l'on a rien a faire le coté contre c'est que si ca merde on ne peut pas faire grand chose. Vous verrez les générateurs sont très facile d'utilisation. |
|
|
00
|
|
|
#7 | ||
|
Membre éclairé
![]() Inscription : décembre 2004 Messages : 379 ![]() |
en firebird l'autoincrément éxiste via un générateur, un exemple:
Code :
|
||
|
|
00
|
|
|
#8 | |
|
Futur Membre du Club
![]() Inscription : décembre 2004 Messages : 36 ![]() |
hello...
ben moi j'ai chercher sur le net comment crée un champ (PRIMARY KEY) incrémental (pour IB6)... je suis tompé sur ce tutorial qui expique bien le sujet : http://kloo.developpez.com/interbase/IB6compteur/ mais une partie n'est pas tres conpréancive a mon gout : Citation:
si quel qu'un la deja fais.. pourait-il m'expliquer ? :o ou si quelqu'un sais une autre manière... merci... ++ |
|
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
C'est un composant pour Delphi, il suffit de compiler le packet et de l'installer.
Le composant ne fait que ce qui a été dit ici. Code :
SELECT Gen_id(MonGenerateur,1) FROM rdb$database; |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com