Précédent   Forum des professionnels en informatique > Bases de données > Autres SGBD > InterBase
InterBase Forum d'entraide sur le SGBD InterBase de Codegear. Avant de poster -> F.A.Q Interbase, Tutoriels
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/11/2002, 22h20   #1
Membre du Club
 
Homme
Ingénieur développement logiciels
Inscription : juin 2002
Messages : 163
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : Belgique

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2002
Messages : 163
Points : 52
Points : 52
Envoyer un message via ICQ à tripper.dim Envoyer un message via AIM à tripper.dim Envoyer un message via MSN à tripper.dim Envoyer un message via Yahoo à tripper.dim Envoyer un message via Skype™ à tripper.dim
Par défaut [RESOLU]Generateur avec interbase 6

Je suppose que cette question revien souvent et bien que j'ai esseyer presque tous les sources que j'ai trouvés je ne suis pas parvenus avec interbase 6 a créer un generateur automatique pour ma clé primaire.
voici une bête table ou j'aimerai avoir NUM_EMP qui s'incrémente tous seul en partant du NULL de départ.

CREATE TABLE EMPLOYES
(
NUM_EMP INT NOT NULL,
NOM_EMP CHAR (25),
PRE_EMP CHAR (25),
PRIMARY KEY (NUM_EMP)
);

D'avance merci pour l'aide que vous pourrez m'apporter.
tripper.dim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2002, 22h39   #2
Futur Membre du Club
 
Inscription : septembre 2002
Messages : 19
Détails du profil
Informations forums :
Inscription : septembre 2002
Messages : 19
Points : 19
Points : 19
Code :
1
2
3
4
5
6
7
8
9
10
11
12
CREATE Generator EMPLOYES_GenId;
 
SET TERM !!;
 
CREATE TRIGGER TRIG_EMPLOYES_GenId FOR EMPLOYES
ACTIVE BEFORE INSERT AS
BEGIN
  IF ( NEW.ID IS NULL ) THEN
    NEW.ID = GEN_ID(EMPLOYES_GenId,1);
END !!
 
SET TERM; !!
Et lorsque tu fait ton insert soit tu met pas le NUM_EMP soit tu met NULL
SuperTotor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2002, 22h48   #3
LFE
Membre actif
 
Inscription : juillet 2002
Messages : 95
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 95
Points : 180
Points : 180
Tiens ... me viens uen question :

en testant si le nouvel ID est null, on evite d'ecraser un ID existant ...
ok
mais si un Id existe deja, c'est qu'on l'a specifie au moment de l'insert.
Jusque la tout se passe bien.

Maintenant arrive le moment ou le generateur atteint une valeur existant deja dans la table. BOUM, Key violation, exception, et on doit ecrire une gestion d'erreur.

est-ce une bonne idee de laisser entrer des valeurs pounr une cle primaire, alorq ue cette cle est geree par un generateur?
j'aurais tendance a dire non.

Pourriez-vous eclairer ma lanterne sur l'interet de cette pratique ?
LFE est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2002, 02h44   #4
Futur Membre du Club
 
Inscription : septembre 2002
Messages : 19
Détails du profil
Informations forums :
Inscription : septembre 2002
Messages : 19
Points : 19
Points : 19
J'avoue que je comprend pas trop bien ta question ... mais je vais essayer quand même:

Tu trouve bizarre de pouvoir inserer une valeur de clé là où un générateur est chargé de créer cette clé.
Pour ma part, je trouve sympas et très pratique certaine fois.
Vu que tu connais ton code, tu sais qu'il faut pas inserer une clé n'importe comment, cela ce fait par prog. et donc controlé. Maintenant si n'importe quel utilisateur peut choisir la clé c sur que ça va planter.
Sinon, le côté pratique est que tu peux demander au generateur un nv id et faire des insert avec cet id comme clé primaire pour un tuple et comme clé étrangère pour d'autre qui vont le référencer.

ça te plaît comme éclairage ?
SuperTotor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2002, 08h13   #5
LFE
Membre actif
 
Inscription : juillet 2002
Messages : 95
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 95
Points : 180
Points : 180
ca me plait, merci,

je n'avais pas envisage cette facon de faire au moment ou j'ai redige le message
LFE est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h18.


 
 
 
 
Partenaires

Hébergement Web