IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Firebird Discussion :

Clé autoincrement pour mise a jour


Sujet :

SQL Firebird

  1. #1
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 679
    Points : 954
    Points
    954
    Par défaut Clé autoincrement pour mise a jour
    Bonjour a tous

    j'aimerais savoir si on a la possibilité de crée une clé auto-incrémenté qui ne s'incrémentera pas en insertion mais lors d'une a jour de la table.
    si cela est possible j'aimerai avoir la syntaxe sql , en faite je veux a chaque qu'une mise a jour est faite sur une ligne incrémenter une clé de cette ligne.
    merci a tous

  2. #2
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Je ne suis pas sûr de bien comprendre ta demande.
    Tu souhaites comptabiliser le nombre de mises à jour effectuées sur l'enregistrement.

    C'est ça ?

  3. #3
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 679
    Points : 954
    Points
    954
    Par défaut
    oui exactement

  4. #4
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Alors dans ce cas il suffit d'un simple champ nommé NB_MAJ par exemple que tu initialises à 0 lors de l'insertion et que tu incrémentes à chaque mise à
    jour via un trigger before update.

    @+ Claudius

  5. #5
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 679
    Points : 954
    Points
    954
    Par défaut
    Je vais implémenter ça
    merci

  6. #6
    Membre actif
    Avatar de castorcharly
    Homme Profil pro
    Chef de projet
    Inscrit en
    Février 2009
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2009
    Messages : 416
    Points : 299
    Points
    299
    Par défaut
    Il y a aussi, si j'ai bien compris la question, la possibilité de mettre un trigger qui se ne déclenche que sur les update et non sur l'insert.

    P.S. après relecture,je vois que c'est la solution proposé par caudius...
    “La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer.” Antoine de Saint-Exupéry.

    D1..D7-2005,2006-Xe2 Ent-XE7 archi-MsSql 2005..2008 & R2, FB 1.5..2.5.x.x -Win10,Win7/64-Xp-
    _____________________________________________________

  7. #7
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 679
    Points : 954
    Points
    954
    Par défaut
    je viens de tester et en faite je me suis mal exprimé en effet
    j'ai donc créer un générateur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    C
    REATE GENERATOR NBREDEFOIS;
    SET GENERATOR NBREDEFOIS TO 1;
    Et ensuite mon trigger

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SET TERM ^ ;
     
    CREATE TRIGGER AUTOMATISME FOR TMATABLE
    ACTIVE BEFORE UPDATE
    POSITION 0
    AS
    BEGIN
    NEW.NB_MAJ = GEN_ID(NBREDEFOIS, 1);
    END^
     
    SET TERM ; ^
    Donc pour tout update sur une ligne on a le nombre de fois NB_MAJ qui prend la valeur du générateur.Jusqu'a ce niveau c'est bon.

    Le problème est que je veux que le trigger se déclenche que si une colonne bien précise est mise a jour !.

    Dans ma table j'ai une colonne GENRE, c'est sur la mise a jour de cette colonne que je veux que le trigger se déclenche !

    Le trigger doit compter le nombre de mise a jour pour cette colonne.

    Merci

  8. #8
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    En réalité la création d'un générateur n'est pas vraiment adaptée au contexte. Tu peux procéder simplement ainsi.

    Le trigger before update de la table:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SET TERM ^ ;
     
    CREATE TRIGGER AUTOMATISME FOR TMATABLE
    ACTIVE BEFORE UPDATE
    POSITION 0
    AS
    BEGIN
      -- Incrémenter la valeur NB_MAJ
      -- dès que le champ GENRE est modifié
      IF (OLD.GENRE <> NEW.GENRE) THEN
        NEW.NB_MAJ = OLD.NB_MAJ + 1;
    END^
     
    SET TERM ; ^
    @+ Claudius

  9. #9
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 679
    Points : 954
    Points
    954
    Par défaut
    je pense que là c'est exactement ce qu'il me fallait

    Merci

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 46
    Points : 37
    Points
    37
    Par défaut
    C'est dingue, on sait TOUT faire avec FireBird

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Module pour mise a jour
    Par tal13 dans le forum VBA Access
    Réponses: 13
    Dernier message: 24/03/2013, 18h05
  2. [AC-2007] Evenement pour mise a jour d'un champ
    Par theuma dans le forum Access
    Réponses: 1
    Dernier message: 20/04/2011, 11h17
  3. [AC-2003] Extraction d'une chaîne pour mise a jour d'un champ
    Par martinfa dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 09/12/2009, 10h27
  4. Réponses: 5
    Dernier message: 22/06/2009, 14h45
  5. Réponses: 6
    Dernier message: 03/12/2008, 19h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo