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 :

Réinitialiser une séquence


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut Réinitialiser une séquence
    Bonjour,

    J'essaye depuis plusieurs heures mais en vain de réinitialiser une séquence pour que ma clé primaire d'une table recommence à 1 car j'ai fait des tests dans cette table et j'ai donc supprimer les donner sauf que j'arrive pas à remettre ma clé primaire à 1.
    J'ai essaye pleins de requête sql proposer sur le net mais en vain.
    La valeur actuelle de ma clé primaire est 8.

    MErci de votre aide

  2. #2
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Vous avez deux solutions:
    1. supprimer et récréer la séquence avec l'inconvénient d'éventuellement perdre les droits données sur cette séquence et d'invalider certaines objets
    2. modifier le pas de la séquence à -7, utiliser la séquence pour retrouver la valeur courante 1 et remodifier le pas à 1

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut
    OK, merci
    En revanche, j'ai un problème. J'ai une contrainte unique sur ma table et quand je vais un insert identique au précédent, cela le bloque, c'est normal. Mais il enregistre l'id que je voulais mettre en mémoire.
    Du coup, au lieu d'avoir 2 en clé primaire pour mon second enregistrement, sa m'insère 3 en clé primaire.

    voici la séquence et le trigger:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CREATE SEQUENCE SEQ
    START WITH 1
    INCREMENT BY 1;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TRIGGER AUTO
    BEFORE INSERT ON MaTable
    FOR EACH ROW
    BEGIN
    SELECT SEQ.nextval INTO :new.idFROM DUAL;
    END;

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    Tu recontrerais le même problème avec un identifiant auto incrémenté.
    Le propre d'un tel système (avec séquence ou auto-incrément, suivant la version du SGBD) est de fournir un identifiant unique sans aucun risque de doublon. Pas d'assurer une suite sans "trou".
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut
    Il me semblait que par exemple, si mon insert retourner une erreur, l'id ne s'auto incrémenté pas et donc que mon insert suivant aurai bien 2 comme clé primaire et non 3 comme mon cas ici.
    Je m'expliquer:
    Mon premier insert a bien eu lieu, donc j'ai un en clé primaire
    Mon second insert a échoué
    Mon troisième insert a bien eu lieu, or j'ai 3 au lieu de 2 en clé primaire

  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    L'incrémentation de la séquence est effectuée avant l'insertion, donc avant que la contrainte d'unicité soit testée et la transaction annulée ou validée. La "consommation" de la valeur de séquence s'effectue hors transaction et il n'est pas possible de revenir dessus.
    Suppose que deux opérations d'insertion dans la table, initiées par deux utilisateurs différents soient exécutées simultanément.
    La séquence était à 1. La première transaction utilise la valeur 2, la seconde la valeur 3. Alors que la seconde opération est validée, la seconde est rejetée. Quelle serait la prochaine valeur dans la séquence ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

Discussions similaires

  1. Réponses: 8
    Dernier message: 10/10/2012, 10h00
  2. Réinitialiser journalièrement une Séquence
    Par mortimer.pw dans le forum Administration
    Réponses: 1
    Dernier message: 06/02/2009, 14h27
  3. réinitialiser une séquence à 0
    Par midotoon dans le forum SQL
    Réponses: 7
    Dernier message: 19/06/2007, 15h59
  4. Passer une séquence en parametre
    Par djousss dans le forum CORBA
    Réponses: 2
    Dernier message: 02/12/2003, 22h39
  5. Extraire une séquence d'un fichier MPEG
    Par enzosp dans le forum DirectX
    Réponses: 2
    Dernier message: 24/02/2003, 11h30

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