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 :

Mise à jour des séquences


Sujet :

Oracle

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 11
    Points : 6
    Points
    6
    Par défaut Mise à jour des séquences
    Bonjour,

    je suis vraiment pas une adepte. et j'ai besoin dans l'urgence d'un script permettant de mettre a jour les sequences de l'ensemble des mes tables


    merci d'avance

  2. #2
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Qu'appelles tu mettre à jour des séquences ?
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    En fait j'ai fait une migration de ma base de données de sql server vers oracle et j'ai besoin de mettre a jour les sequences de l'ensemble de mes tables.

  4. #4
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    toujours la même question : qu'entends-tu pas "mise à jour des sequences" ?

    lors de ta migration, les sequences ne sont pas transférées ? tu dois en créer de nouvelles selon des No MAX de tes tables ? autre ?
    Il est plus facile de voir les signes avant-coureurs après coup que l'inverse !

    Yorglaa

  5. #5
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    C'est à dire: tu souhaites recréer tes séquences à partir d'une certaine valeur ? ou tu souhaites mettre à jour les colonnes de tes tables qui sont liées à une séquence ?
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

  6. #6
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    on m'a donné une piste de script:
    update sequence set next=(select max(index) from matable)

  7. #7
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Merci de respecter les règles de ce forum :
    http://www.developpez.net/forums/viewtopic.php?t=309476
    et de notamment préciser votre version et d'utiliser les balises code.

    Ensuite vous ne pouvez pas faire d'update sur la séquence. Vous devez la dropper et la recréer ensuite. En faisant une recherche avancée sur le forum, vous aurez moult exemples.
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

  8. #8
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    Citation Envoyé par delphyjp
    on m'a donné une piste de script:
    update sequence set next=(select max(index) from matable)
    mauvaise piste. eventuellement une boucle du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SQL> declare
      2      m number;
      3      n number := 0;
      4  begin
      5      select max(empno) into m from emp;
      6      while (n<m) loop
      7     select s.nextval into n from dual;
      8      end loop;
      9 end;
      10 /
     
    PL/SQL procedure successfully completed.
    où s est ta séquence et emp.empno est ton indice

  9. #9
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    Citation Envoyé par delphyjp
    En fait j'ai fait une migration de ma base de données de sql server vers oracle et j'ai besoin de mettre a jour les sequences de l'ensemble de mes tables.
    mettre à jour comment ? Ca fait plusieurs fois qu'on te demande d'être plus précis. Tu veux tout remettre à 1, tout mettre à une valeur identique, etc... ?

  10. #10
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    [quote="laurentschneider"]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SQL> declare
      2      m number;
      3      n number := 0;
      4  begin
      5      select max(empno) into m from emp;
      6      while (n<m) loop
      7     select s.nextval into n from dual;
      8      end loop;
      9 end;
      10 /
    Si la valeur cible est très grande, c'est un peu une méthode shadock...

    On peut procéder en modifiant temporairement l'incrément de la séquence, et en la faisant avancer d'un seul grand pas.
    Supposons qu'on veuille augmenter d'un coup la séquence de 1 000 000.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    select seq.nextval from dual;
    --> 43                     
     
    alter sequence seq increment by 1000000;
    --> alter sequence seq succeeded.
     
    select seq.nextval from dual;
    --> 1000043                
     
    alter sequence seq increment by 1;
    --> alter sequence seq succeeded.
     
    select seq.nextval from dual;
    --> 1000044
    Ca évite de supprimer la séquence pour la recréer, et de perdre au passage les droits donnés sur elle.
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  11. #11
    Membre éclairé Avatar de plabrevo
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 547
    Points : 670
    Points
    670
    Par défaut
    Si des conventions de noms existent entre les tables et les sequences et en presence de PK, ce ne serait pas trop complique a automatiser: Entre autres possibilites:
    • Balayer toutes les sequences.
      Pour chaque sequence, deduire la table, par example retirer '_S' de la chaine de charactere pour une table Oracle Applications (exemple GL_JE_LINES_S est la sequence utilisee pour la table GL_JE_LINES)
      Pour cette table, rechercher la surrogate key dans le metadictionnaire de donnee.
      Rechercher dynamiquement la derniere valeur de cette cle sur la table.
      Enregistrer dans un tableau la sequence et sa nouvelle value.

      Ensuite, spooler un fichier avec les commandes drop/create qui vont bien.

    Si les prerequis sont satisfaits (conventions de noms et PK), c'est une petite heure de travail.

Discussions similaires

  1. Réponses: 16
    Dernier message: 07/05/2009, 13h23
  2. Réponses: 10
    Dernier message: 03/03/2009, 11h46
  3. [JTable] mise à jour des données
    Par tripop dans le forum Composants
    Réponses: 3
    Dernier message: 04/02/2009, 18h52
  4. [HTML] Problème mise à jour des fichiers en cache
    Par El Riiico dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 05/09/2005, 17h00
  5. Mise à jour des tables liées + TIMESTAMP
    Par Homegrown dans le forum Access
    Réponses: 11
    Dernier message: 25/04/2005, 21h52

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