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

Oracle Discussion :

Modifier la valeur de CurVal ou NextVal d'une séquence


Sujet :

Oracle

  1. #1
    Membre averti
    Homme Profil pro
    Développeur VB6 et tout neuf en .Net
    Inscrit en
    Avril 2005
    Messages
    377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VB6 et tout neuf en .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 377
    Points : 446
    Points
    446
    Par défaut Modifier la valeur de CurVal ou NextVal d'une séquence
    Bonjour a tous,

    J'ai developpé (VB6 et ADO) un programme qui permet de copier toute une base de données entre deux types de serveurs différents (ex : entre SQlServer et Oracle).

    Pendant la copie je suis obligé de désactiver les triggers/séquences.
    Tout fonctionne bien, les données sont bien copiées, mais a la fin de la copie les séquences ne sont pas à jour.

    Peut-on imposer la valeur suivante d'une séquence ?
    Ex : Alter Sequence NextVal = 317

    Merci à tous

  2. #2
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Points : 1 197
    Points
    1 197
    Par défaut
    Salut,

    Tu peux utiliser ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Redémarrer la séquence appelée serie à 105 : 
     
    ALTER SEQUENCE serie RESTART WITH 105;

  3. #3
    Membre averti
    Homme Profil pro
    Développeur VB6 et tout neuf en .Net
    Inscrit en
    Avril 2005
    Messages
    377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VB6 et tout neuf en .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 377
    Points : 446
    Points
    446
    Par défaut
    Merci pour ton aide, mais cela ne fonctionne pas
    Je pense Restart With n'existe pas avec Oracle

  4. #4
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Points : 1 197
    Points
    1 197
    Par défaut
    salut,

    Désolé, mais il y a un autre moyen:

    supprimer la sequence et la recréer avec le start with 317

  5. #5
    Membre averti
    Homme Profil pro
    Développeur VB6 et tout neuf en .Net
    Inscrit en
    Avril 2005
    Messages
    377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VB6 et tout neuf en .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 377
    Points : 446
    Points
    446
    Par défaut
    Merci pour ta réponse.

    Je vais utiliser ta solution.

  6. #6
    Expert éminent
    Homme Profil pro
    Big Data / Freelance EURL
    Inscrit en
    Mars 2003
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Big Data / Freelance EURL

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 124
    Points : 7 291
    Points
    7 291
    Par défaut
    sous oracle je l'avais cherché il n'y a pas longtemps, sans avoir à la recréer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ALTER SEQUENCE seq INCREMENT BY -50;
    SELECT seq.NEXTVAL  FROM dual;
     
    ALTER SEQUENCE seq increment by 1;
    SELECT seq.NEXTVAL FROM dual;
    On modifie la séquence de tel sorte que la séquence existante moins la séquence voulue soit, dans ton exemple, 317-1. Pour cela on utilise un incrément négatif.

    Si la séquence existante est 366 alors le nextval d'incrément -50 donnera 366-50=316
    Ensuite on la remodifie pour que l'incrément soit de 1.
    Et sa réutilisation fait 316+1=317.

  7. #7
    Membre averti
    Homme Profil pro
    Développeur VB6 et tout neuf en .Net
    Inscrit en
    Avril 2005
    Messages
    377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VB6 et tout neuf en .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 377
    Points : 446
    Points
    446
    Par défaut
    Merci phili_b,

    Il faillait y penser !

  8. #8
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 286
    Points : 279
    Points
    279
    Par défaut
    Citation Envoyé par phili_b
    sous oracle je l'avais cherché il n'y a pas longtemps, sans avoir à la recréer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ALTER SEQUENCE seq INCREMENT BY -50;
    SELECT seq.NEXTVAL  FROM dual;
     
    ALTER SEQUENCE seq increment by 1;
    SELECT seq.NEXTVAL FROM dual;
    On modifie la séquence de tel sorte que la séquence existante moins la séquence voulue soit, dans ton exemple, 317-1. Pour cela on utilise un incrément négatif.

    Si la séquence existante est 366 alors le nextval d'incrément -50 donnera 366-50=316
    Ensuite on la remodifie pour que l'incrément soit de 1.
    Et sa réutilisation fait 316+1=317.
    Et si une autre application utilise la sequence entre les 2 commandes ALTER ?

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

Discussions similaires

  1. [V8] Modifier la valeur d'un attribut à partir d'une autre classe
    Par othman3535 dans le forum Odoo (ex-OpenERP)
    Réponses: 3
    Dernier message: 15/01/2015, 16h18
  2. [XSL] Comment modifier la valeur d'une variable?
    Par sorcer1 dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 17/02/2010, 14h26
  3. Réponses: 3
    Dernier message: 12/06/2006, 13h04
  4. Réponses: 3
    Dernier message: 04/01/2006, 21h53
  5. Modifier la valeur d'un champ en fonction d'une autre...
    Par venividivici dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 25/08/2005, 15h28

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