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

SQL Oracle Discussion :

Réinitialiser une séquence de façon automatique


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Par défaut Réinitialiser une séquence de façon automatique
    Bonjour à tous,

    J'utilise une séquence qui fonctionne bien. C'est une séquence qui permet une incrémentation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     Create sequence suivis_dm_seq
     Start with 1
     Maxvalue 9999
     MINVALUE 1
       NOCYCLE
       NOCACHE
       NOORDER
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Create trigger suivis_dm_trig
    Before insert on suivis_dm
    For each row
    Begin
    select suivis_dm_seq.nextval
    into :new.sd_ordre
    From dual;
    end;
    J'utilise cette séquence en concaténation avec l'année en cours dans mon programme Delphi.
    Je veux faire de telle sorte qu' à une nouvelle année, la séquence se réinitialise automatiquement, c'est à dire recommence par 1.
    Est-ce possible de le faire sous oracle?

    Merci d'avance à vous.

  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
    En principe c’est possible mais ce n’est pas quelque chose à faire dans votre cas. Soit vous devez utiliser une table des compteurs avec le gros désavantage d’un impact négatif sur la concurrence soit vous pouvez vous en passer de cette astuce.
    L’idée de concaténer l’année avec cette séquence n’est pas non plus de bon augure.

  3. #3
    Membre éclairé Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Par défaut
    Merci pour votre conseil. Dans ce cas, comme je fais fausse route, que dois-je faire?

    Merci.

  4. #4
    Expert confirmé
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 822
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Je verrais bien:
    - une colonne ANNEE
    - une colonne ID à partir d'une sequence (jamais réinitialisée)

    Ensuite, en fonction du besoin, l'info année + numéro de sequence dans l'année peut très bien se faire au moment de l'interrogation. Ou par batch. Tout dépend de la signification métier de cette information, et de son cycle de vie:
    - Que se passe-t-il si on veut insérer une information pour l'année dernière ?
    - Que se passe-t-il si un supprime un enregistrement -> on accepte les trous ?

    Pour ne pas faire d'erreur, il faut juste voir la sequence comme un générateur de nombre toujours unique, sans compter sur le fait qu'il est censé aller en augmentant, sans compter sur le fait qu'ils se suivent souvent,...

    Cordialement,
    Franck.

  5. #5
    LEK
    LEK est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    715
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 715
    Par défaut
    si vous êtes sous oracle 11g il existe aussi le concept des colonnes virtuelles (calculées).... Elle pourrait contenir la concaténation de votre id et l'année de sa création.

  6. #6
    Membre éclairé Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Par défaut
    Salut à tous,

    Merci pour vos différentes interventions. J'ai fais comme le dit pachot :
    - une colonne ANNEE
    - une colonne ID à partir d'une sequence (jamais réinitialisée)
    Les deux sont concaténés pour renseigné le champs d'une autre table et cela fais mon affaire.
    Je m'explique : La concaténation de l'ID et de l'année donne : DM-2012-1 pour la première Demande de Matériel(DM) de l'année 2012. Et plusieurs demandes peuvent être faites par jour(DM-2012-2, DM-2012-3 etc...)
    En début d'année 2013, je veux avoir DM-2013-1 de façon automatique.
    Voilà, je pense que vous m'avez un peu compris.
    Merci pour votre aide.

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/03/2015, 19h48
  2. Réinitialiser une séquence
    Par totot dans le forum Oracle
    Réponses: 15
    Dernier message: 24/03/2015, 18h17
  3. Réinitialiser journalièrement une Séquence
    Par mortimer.pw dans le forum Administration
    Réponses: 1
    Dernier message: 06/02/2009, 14h27
  4. changement du numéro d'une façon automatique
    Par Mapokko dans le forum Excel
    Réponses: 1
    Dernier message: 02/01/2009, 15h05
  5. réinitialiser une séquence à 0
    Par midotoon dans le forum SQL
    Réponses: 7
    Dernier message: 19/06/2007, 15h59

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