|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Futur Membre du Club
![]() Inscription : mars 2002 Messages : 84 ![]() |
Bonjour,
voila j'aimerai savoir comment remettre a 0 un compteur. J'ai crée un generator ainsi qu'un trigger pour auto incrementer ma clé primaire lorsque j'insere un nouvel enregistrement cependant j'aimerai le refaire partir a 0 quand on supprime tout les enregistrements d'une table ou le dernier enregistrement. Je voudrais le faire avec un trigger after delete mais apres je ne vois pas comment verifier si il n'y a plus d'enregistrements dans la table merci |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Remettre à zero c'est facile il suffit de faire un Le seul problème c'est que si vous êtes en mode multi-user vous risquez d'avoir des soucis.
Cette opération est plutot à reserver lors de la maintenance de la base, deconnexion des users, effacement des enregistrements et RAZ du générateur. Dans le cadre d'une utilisation courante et donc dans un trigger after delete comme vous souhaitez le faire, sachez juste que vous ne pourrez plus dire que votre base est multi-user. Ou du moins ça serait mentir car cette opération n'est pas compatible dans cette environnement. Il faut accepter - qu'une clé primaire ait des trous (lorsqu'un User fait un rollback alors que l'enregistrement a été inséré, l'ID n'est pas réutilisé). - qu'après un effacement total ou partiel des enregistrements, la clé primaire ne reparte pas de zero ou de la plus grande valeurs dans la table mais bien de la valeur suivante du générateur. Sans ça vous vous exposez à des conflits entre users. |
|
|
00
|
|
|
#3 |
|
Futur Membre du Club
![]() Inscription : mars 2002 Messages : 84 ![]() |
nan mais dans mon cas c'est pas multi-utilisateurs, c'est juste pour me familiariser avec interbase donc je serai le seul a l'utiliser, c'est pour apprendre dans un premier temps. Ouais je vois comment faire pour le mettre a 0 mais je voudrai verifier d'abord si la base est bien vide, je viens de realsier une procedure stockée qui me compte le nombre d'enregistrements d'une table ùais j'arrive a l'appeler dans un trigger, je crois que j'ai un probleme avec la valeur de retour
SET TERM !!; CREATE TRIGGER DELETE_ARTISTE FOR ARTISTES ACTIVE AFTER DELETE AS DECLARE VARIABLE nbcount INTEGER; BEGIN EXECUTE PROCEDURE PROC_INIT_GEN_ARTISTES RETURNING_VALUES :nbcount; IF :nbcount = 0 THEN SET GENERATOR ARTISTES_GEN TO 0; END; !! voila ce que j'ai fais mais j'ai une erreure |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
normal vous n'avez pas le droit d'utiliser le set generator dans une PS/trigger.
|
|
|
00
|
|
|
#5 |
|
Futur Membre du Club
![]() Inscription : mars 2002 Messages : 84 ![]() |
ouais effectivement ça marche pas, quelqu'un a pas une idée ?
|
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
j'en ai bien une mais j'ai bien peur de l'avoir déjà donnée dans mon premier message. |
|
|
00
|
|
|
#7 | ||
|
Futur Membre du Club
![]() Inscription : mars 2002 Messages : 84 ![]() |
si si je l'ai bien vu, je l'ai utilisé dans un trigger mais ça ne fonctionne toujours pas
Code :
Edité par Barbibulle : :tagcode: |
||
|
|
00
|
|
|
#8 | ||
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Gen_id renvoie une valeur je pense que ça lui pose probleme de pas l'affecter.
vous avez qu'a utiliser votre nbcount qui est de type integer et qui ne vous sert plus a rien : Code :
|
||
|
|
00
|
|
|
#9 |
|
Futur Membre du Club
![]() Inscription : mars 2002 Messages : 84 ![]() |
Ok c'est bon merci Barbibulle !
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com