Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/03/2007, 15h43   #1
Membre éprouvé
 
Homme Sylvain Aufrère
Développeur informatique
Inscription : avril 2005
Messages : 370
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Aufrère
Âge : 36
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2005
Messages : 370
Points : 432
Points : 432
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
__________________
Le plus difficile pour trouver une bonne réponse, c'est déjà de trouver la bonne question.
Najdar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2007, 15h49   #2
Rédacteur
 
Homme Salim
Développeur et DBA Oracle
Inscription : octobre 2006
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Salim
Localisation : Canada

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

Informations forums :
Inscription : octobre 2006
Messages : 872
Points : 1 100
Points : 1 100
Salut,

Tu peux utiliser ce code
Code :
1
2
3
4
 
Redémarrer la séquence appelée serie à 105 : 
 
ALTER SEQUENCE serie RESTART WITH 105;
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2007, 15h59   #3
Membre éprouvé
 
Homme Sylvain Aufrère
Développeur informatique
Inscription : avril 2005
Messages : 370
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Aufrère
Âge : 36
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2005
Messages : 370
Points : 432
Points : 432
Merci pour ton aide, mais cela ne fonctionne pas
Je pense Restart With n'existe pas avec Oracle
__________________
Le plus difficile pour trouver une bonne réponse, c'est déjà de trouver la bonne question.
Najdar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2007, 16h43   #4
Rédacteur
 
Homme Salim
Développeur et DBA Oracle
Inscription : octobre 2006
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Salim
Localisation : Canada

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

Informations forums :
Inscription : octobre 2006
Messages : 872
Points : 1 100
Points : 1 100
salut,

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

supprimer la sequence et la recréer avec le start with 317
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2007, 17h09   #5
Membre éprouvé
 
Homme Sylvain Aufrère
Développeur informatique
Inscription : avril 2005
Messages : 370
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Aufrère
Âge : 36
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2005
Messages : 370
Points : 432
Points : 432
Merci pour ta réponse.

Je vais utiliser ta solution.
__________________
Le plus difficile pour trouver une bonne réponse, c'est déjà de trouver la bonne question.
Najdar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2007, 20h50   #6
Membre Expert
 
Homme
Expert Datawarehouses + BO (sur BDD Oracle et SQL Server)
Inscription : mars 2003
Messages : 645
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 41
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Expert Datawarehouses + BO (sur BDD Oracle et SQL Server)

Informations forums :
Inscription : mars 2003
Messages : 645
Points : 1 165
Points : 1 165
sous oracle je l'avais cherché il n'y a pas longtemps, sans avoir à la recréer :
Code :
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.
phili_b est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2007, 09h05   #7
Membre éprouvé
 
Homme Sylvain Aufrère
Développeur informatique
Inscription : avril 2005
Messages : 370
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Aufrère
Âge : 36
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2005
Messages : 370
Points : 432
Points : 432
Merci phili_b,

Il faillait y penser !
__________________
Le plus difficile pour trouver une bonne réponse, c'est déjà de trouver la bonne question.
Najdar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2007, 08h47   #8
Membre confirmé
 
Homme Alain
Inscription : mars 2004
Messages : 249
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 43
Localisation : France

Informations forums :
Inscription : mars 2004
Messages : 249
Points : 216
Points : 216
Citation:
Envoyé par phili_b
sous oracle je l'avais cherché il n'y a pas longtemps, sans avoir à la recréer :
Code :
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 ?
Alain B. est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h47.


 
 
 
 
Partenaires

Hébergement Web