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
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
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.
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.
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
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.
on m'a donné une piste de script:
update sequence set next=(select max(index) from matable)
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.
mauvaise piste. eventuellement une boucle du styleEnvoyé par delphyjp
où s est ta séquence et emp.empno est ton indice
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.
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... ?Envoyé par delphyjp
[quote="laurentschneider"]
Si la valeur cible est très grande, c'est un peu une méthode shadock...
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 /
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.
Ca évite de supprimer la séquence pour la recréer, et de perdre au passage les droits donnés sur elle.
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
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
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager