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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Novembre 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 11
    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
    Par défaut
    Qu'appelles tu mettre à jour des séquences ?

  3. #3
    Membre habitué
    Inscrit en
    Novembre 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 11
    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 émérite Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    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 ?

  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
    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 ?

  6. #6
    Membre habitué
    Inscrit en
    Novembre 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 11
    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
    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.

  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
    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
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    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 461
    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 461
    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.

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    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