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 :

Copier la valeur d'un générateur


Sujet :

SQL Firebird

  1. #1
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Avril 2004
    Messages : 249
    Points : 112
    Points
    112
    Par défaut Copier la valeur d'un générateur
    Bonjour.

    Je souhaite changer le nom d'une table dans ma base.
    J'ai donc construit ma nouvelle table (nouveau nom, nouveaux champs).
    J'ai recopié les données à l'aide d'une requête.
    Là, j'ai un soucis avec la valeur du générateur de la nouvelle table.
    Forcément, il est égal à 0.
    Dans l'ancienne table, il est égal à 28.
    Evidemment, ce serait trop simple si je connaissais à l'avance l'ancienne valeur, mais ma mise à jour va se faire dynamiquement sur des bases clients et dans ce cas, je ne connaitrais pas cette valeur.

    J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET GENERATOR GEN_NOUVEAU_ID TO GEN_ANCIEN_ID
    mais ça ne fonctionne pas.

    Existe-t-il un moyen de pallier à ce problème ?

    Merci
    _____
    __
    _

    Engi

  2. #2
    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
    tout ce que tu veux savoir se trouve ici http://firebird.developpez.com/faq/i...ator#GEN_GETID


  3. #3
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Avril 2004
    Messages : 249
    Points : 112
    Points
    112
    Par défaut
    J'avais déjà lu cet article de la faq.
    Le problème est que l'on y expose la façon de créer, de supprimer ou de lire un générateur.
    En ce qui me concerne, je cherche à copier dans un générateur A la valeur du générateur B.
    Possible ?
    _____
    __
    _

    Engi

  4. #4
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Select 
      gen_id(NOUVEAU_GENERATEUR, 
        (gen_id(ancien_generateur,0) 
        - gen_id(NOUVEAU_GENERATEUR,0))
      ) from rdb$database;

  5. #5
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Avril 2004
    Messages : 249
    Points : 112
    Points
    112
    Par défaut
    J'avoue ne pas bien comprendre comment l'update se fait mais cela fonctionne parfaitement !
    Merci beaucoup, tu me retires une belle épine du pied.
    _____
    __
    _

    Engi

  6. #6
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Gen_id est la fonction SQL qui permet d'incrémenter (ou décrémenter) un générateur.

    Donc :
    gen_id(mon_generateur, 1) augmente la valeur de mon_générateur de 1 (et renvoie la nouvelle valeur du générateur).

    Gen_id(mon_generateur, 0) augmente la valeur..... de zéro et renvoie donc la valeur actuelle du générateur.

    j'ai donc simplement augmenté la valeur du nouveau générateur de la valeur de l'ancien générateur (moins la valeur du nouveau générateur au cas ou celui ci ne serait pas a zéro).

    Si vous êtes certain que le NOUVEAU_GENERATEUR est a zéro vous pouvez simplifier en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT 
      gen_id(NOUVEAU_GENERATEUR, gen_id(ancien_generateur,0))
    FROM rdb$database;

  7. #7
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Avril 2004
    Messages : 249
    Points : 112
    Points
    112
    Par défaut
    Merci pour les explications ...
    _____
    __
    _

    Engi

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

Discussions similaires

  1. Copier en valeur XL -> Access
    Par Echizen1 dans le forum Access
    Réponses: 5
    Dernier message: 28/11/2006, 16h45
  2. Réponses: 4
    Dernier message: 11/09/2006, 17h58
  3. VBA-Excel copier la valeur d'une textbox dans une cellule
    Par GrandGarfield dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/08/2006, 10h15
  4. Copier les valeurs d'un formulaire dans une table
    Par Cyphen dans le forum Access
    Réponses: 4
    Dernier message: 19/06/2006, 10h45
  5. [SQL] copier la valeur de plusieurs champs
    Par Ben_Le_Cool dans le forum Bases de données
    Réponses: 2
    Dernier message: 30/04/2006, 18h10

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