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 :

Ordonnancement sur champ spécialisé


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 127
    Par défaut Ordonnancement sur champ spécialisé
    Bonjour
    J'utilise SQL server 2005
    Je voudrais pouvoir stocker et restituer les positions auquelles ont été insérées des lignes dans une table, dans un devis comportant de très nombreux articles par exemple il est fastidieux de laisser à l'utilsateur la gestion de cet ordre par exemple sur un champ de numerotation ; la demande est que cela soit gérer automatiquement . Avec des SGBD comme Access ou Paradox j'ajoute un champ ORD a ma table et je gère comme ceci
    insertion à 1 quand nb ligne = 0
    insertion à n et augmentation de 1 de toutes les valeurs > n
    delete de n et decrementation de 1 de toutes les valeurs > n
    etc ..
    avec SQL server je peux faire cela dans des trigger, mais n'existe t'il pas un moyen plus simple plus intégré

  2. #2
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Par défaut
    Il te suffit d'indiquer que le champs est un auto-incrément

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    create table t_table
    (
      tab_id int not null identity(1,1),
      ...
      ...
    )
    go

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  3. #3
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 127
    Par défaut
    j'ai du encore mal m'exprimer, mais il s'agit de pouvoir placer
    par exemple le dernier enregistrement inséré le 100 par exemple; à la position
    50 et que cela puisse être restitué a l'application cliente cad grace à une requête avec un ORDER BY sur ce champ

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    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 : 22 002
    Billets dans le blog
    6
    Par défaut
    Inspirez vous de l'article que j'ai écrit à ce sujet en ajoutant à la table des clefs une colonne facture_id.
    A lire : http://sqlpro.developpez.com/cours/clefs/

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 127
    Par défaut
    Non décidément ce n'est pas le problème, mes tables se présentent ainsi
    ce sont en fait des devis et leurs items dans la table suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    CREATE TABLE T_DEVPART_DPT (
    	DPT_ID bigint IDENTITY(1,1) NOT NULL PRMARY KEY,
    	DEV_ID bigint NOT NULL,
    	DPT_ORD int NOT NULL
    - mon champ DPT_ORD doit se réinitialiser à 1 à chaque devis
    - de nombreux utilsateurs ajoutent des lignes à cette table
    donc la clef DPT_ID auto inc augmente très vite, si un utilisateur revient
    une semaine après sur un devis il veut insérer une ligne prenant
    par ex la clef primaire 3500 avant celle qui a la clef primaire 1500,
    (tous est invisible pour lui bien sur) .Je ne vais quand même pas augmenter
    toutes les valeurs de clef > 1500 pour laisser la place à cette nouvelle ligne

    Donc ma question était quelle est la meilleure manière d'implémenter cela
    or la solution que j'ai présenté au début de ce fil cad ajout d'un champ nonclef primaire dont on maintien la séquence de nombre à jour pour chaque devis

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    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 : 22 002
    Billets dans le blog
    6
    Par défaut
    Commencez par bien lire l'article que j'ai écrit au lieu de vous buter...
    Utilisez DPT_ORD comme incrément réinitialisé à chaque nouvel DEV_ID.
    Autrement dit par rapport à l'article, la table des clefs doit contenir une colonne supplémentaire DEV_ID.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. Critères sur champ de type date
    Par blasco dans le forum Access
    Réponses: 2
    Dernier message: 29/10/2004, 09h48
  2. tri sur champ texte
    Par ridan dans le forum Langage SQL
    Réponses: 6
    Dernier message: 20/08/2004, 16h28
  3. Recherche sur champ calculé
    Par srvremi dans le forum Bases de données
    Réponses: 5
    Dernier message: 06/07/2004, 14h04
  4. Fonction LEFT sur champ de type "text" : méthodes
    Par MatthieuQ dans le forum Langage SQL
    Réponses: 4
    Dernier message: 08/06/2004, 11h15
  5. tabulation sur champs de saisie
    Par xClyde dans le forum Flash
    Réponses: 2
    Dernier message: 25/09/2003, 16h49

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