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

MS SQL Server Discussion :

auto incrément sur deux champs


Sujet :

MS SQL Server

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 96
    Points : 76
    Points
    76
    Par défaut auto incrément sur deux champs
    Bonjour à tous,

    Y à t il possibilité d'auto-incrémenter un champ sur une clé double ???

    Je m'explique au cas où.

    J'ai donc 2 champs

    l'un en saisie et l'autre que j'aimerai en auto incrément.
    ID_TEST et ID
    j'aimerai avoir la possiblilité de saisir ceci

    je saisie 1 sur ID_TEST alors ID (auto-incrément) = 1
    je saisie 1 sur ID_TEST alors ID (auto-incrément) = 2
    je saisie 1 sur ID_TEST alors ID (auto-incrément) = 3

    je saisie une nouvelle valeur pour ID_TEST

    je saisis 2 sur ID_TEST alors ID (auto-incrément) = 1
    je saisis 2 sur ID_TEST alors ID (auto-incrément) = 2
    je saisis 2 sur ID_TEST alors ID (auto-incrément) = 3

    Est il donc possible de faire un reinit de ID (auto-incrément) par groupe de ID_TEST ?

    Par avance merci. Pour info j'utilise SQL Server 2000.

  2. #2
    Membre confirmé Avatar de agemis31
    Profil pro
    DBA
    Inscrit en
    Octobre 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : DBA

    Informations forums :
    Inscription : Octobre 2007
    Messages : 399
    Points : 478
    Points
    478
    Par défaut
    Bonjour,

    Ce n'est pas possible avec une colonne IDENTITY. Votre structure à l'air de ressembler à un maître/détail, mais dans une seule table. Pourquoi voulez vous faire cela ?

    @+

  3. #3
    Membre régulier
    Inscrit en
    Mai 2007
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 149
    Points : 89
    Points
    89
    Par défaut
    Pour faire ça il te faudra faire un trigger.

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 96
    Points : 76
    Points
    76
    Par défaut
    Ok pour le trigger,

    Mais comment dois je faire ?

    je suis malheureusement grand débutant sur sqlserver.

    merci d'avance.

  5. #5
    Membre régulier
    Inscrit en
    Mai 2007
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 149
    Points : 89
    Points
    89
    Par défaut
    Cherche un peu sur google comment ajouter un trigger à ta table.
    Dans ton trigger :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    declare @tid int,@dernieridinsere int
    select @tid = id_test from inserted
    select @dernieridinsere = ident_current('matable')
    if @tid<> @dernieridinsere
    begin
    update facture set id = [...A COMPLETER]
    end
    Voila c'est juste pour te donner quelques pistes j'espère que quelqu'un pourra compléter ou encore mieux, que tu trouveras la solution tout seul.

  6. #6
    Membre confirmé Avatar de agemis31
    Profil pro
    DBA
    Inscrit en
    Octobre 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : DBA

    Informations forums :
    Inscription : Octobre 2007
    Messages : 399
    Points : 478
    Points
    478
    Par défaut
    Bonsoir,

    Pourquoi pas un trigger en effet. Par contre un trigger qui assume qu'il n'y a qu'une seule ligne dans inserted, c'est assez optimiste/dangereux (au choix) . D'ou ma question sur la raison de ce découpage de clef.

    @+

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 888
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 888
    Points : 53 121
    Points
    53 121
    Billets dans le blog
    6
    Par défaut
    Avec un trigger et par la méthode de calcul interne les performances seront catastrophiques !

    Le moyen le plus simple et d'ajouter à votre base de données une table de clef à numérotation relative.

    Exemple :
    T_COMPTEUR_CPT
    (CPT_ID INT NOT NULL IDENTITY PRIMARY KEY
    CPT_KEY INT NOT NULL,
    CPT_VALUE INT NOT NULL DEFAULT 1)

    Et calculer la nouvelle clef dans une PS.

    Voir l'article que j'ai écrit à ce sujet :
    http://sqlpro.developpez.com/cours/clefs/

    A +

  8. #8
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 96
    Points : 76
    Points
    76
    Par défaut
    Merci pour vos infos.

    En regardant sur internet j'ai pu constater qu'en effet les temps de réponse sont plutôt pas terrible par trigger.

    Je prendrai certainement la derniere réponse.

    Encore un grand merci à tous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème champ auto-incrément sur SQL Server 2000
    Par samirmember dans le forum Bases de données
    Réponses: 4
    Dernier message: 15/03/2010, 13h17
  2. Tri sur deux champs en même temps
    Par Azharis dans le forum Access
    Réponses: 8
    Dernier message: 11/01/2006, 13h10
  3. [MYSQL] Problème ORDER BY sur deux champs
    Par LE NEINDRE dans le forum Requêtes
    Réponses: 8
    Dernier message: 14/10/2005, 16h46
  4. pb avec select sur deux champs
    Par graphicsxp dans le forum Langage SQL
    Réponses: 7
    Dernier message: 22/03/2005, 15h30
  5. contrainte sur deux champs d'une table
    Par bdkiller dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 17/09/2004, 18h26

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