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 :

Problème insertion dernière ligne


Sujet :

MS SQL Server

  1. #1
    Membre confirmé Avatar de Aizen64
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 561
    Points : 462
    Points
    462
    Par défaut Problème insertion dernière ligne
    Bonjour,

    j'ai un petit soucis sur un ajout d'élément dans une table.

    A supposer que j'ai 30 éléments dans cette table, la clé primaire est un numéro qui s'incrémente à chaque insertion.

    Je récupère des données à la ligne 10 et ensuite je fais une insertion dans la table, qui devra avoir le numéro 31 donc.

    Tout ça fonctionne sauf que l'insertion se fait à la suite de l'indice 10 et non en bout de table, c'est pas terrible niveau lisibilité, des solutions pour insérer automatiquement en fin de table ?
    Exprimer une différence d'opinion vaut mieux que :

  2. #2
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonjour,

    Essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT MAX(ChampsPrimaryKey) + 1
             FROM Table
    -- ORDER BY ChampsPrimaryKey "mais là je suis pas sûr"
    Sinon tu as le chapitre 3 à cette adresse qui explique tout sur les clefs auto incrémenté

    http://sql.developpez.com/clefs/
    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 140
    Points : 166
    Points
    166
    Par défaut
    Bonjour,

    Ton problème n'est pas clair, tu parles d'ordre lors de l'insertion. L'ordre n'est fournit que par la clause ORDER BY.

    Peux tu fournir ton SELECT.

  4. #4
    Membre confirmé Avatar de Aizen64
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 561
    Points : 462
    Points
    462
    Par défaut
    J'ai réussi mais j'ai utilisé une technique un peu bizarre :

    J'ai fait un SELECT d'une donnée quelconque de la table vraiment au hasard au dernier élément de la table juste avant l'insertion.

    Par conséquent au moment de l'insertion, il a plaçé le nouvel enregistrement à la suite.

    Pour être plus clair si je reprends l'exemple que j'ai donné avant, j'ai récupéré les données à la ligne 10, ensuite j'ai sélectionné une donnée bidon sur la 30ème ligne (la dernière de la table avant l'insertion), et enfin j'ai fait l'insertion que je voulais faire.

    Forcément, la ligne suivante va être utilisée pour l'insertion.
    Exprimer une différence d'opinion vaut mieux que :

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 140
    Points : 166
    Points
    166
    Par défaut
    Je suis content que tu ai résolu ton problème mais honnêtement, je ne comprends rien a ce que tu fais et ce que tu veux faire.
    Je me demande si tu ne te trompe pas sur la manière dont fonctionne un SGDD.

  6. #6
    Membre confirmé Avatar de Aizen64
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 561
    Points : 462
    Points
    462
    Par défaut
    Je vais tenter d'être clair, voilà un exemple, avec les indices de lignes qui correspond à une clé primaire (entier) :

    1
    2
    3
    5
    6
    7
    8
    9
    10


    A supposer que je récupère des infos sur la ligne 6, et que juste après (TRIGGER) je dois insérer un enregistrement. Cet enregistrement devra avec comme clé primaire 11.

    Si je fais l'insertion directement après avoir récupéré des champs à la ligne 6, ça donnera ça dans ma table :

    1
    2
    3
    4
    5
    6
    11
    7
    8
    9
    10

    Techniquement il n'y a aucun problème après c'est une question de requête SQL sur la table, mais pour des questions de lisibilité et compte tenu que je fais certains tests, c'est plus facile que je vois ça :

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

    Pour faire ça, juste avant d'insérer un enregistrement, je fais une requête SQL bidon sur la dernière ligne présente sur la table, dans l'exemple c'est 10 avant insertion, par conséquent, la prochaine insertion sera placée tout au bout.

    Suis-je clair ?
    Exprimer une différence d'opinion vaut mieux que :

  7. #7
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations forums :
    Inscription : Février 2006
    Messages : 562
    Points : 859
    Points
    859
    Par défaut
    Je pense, mais je me trompe peu être, qu'il s'agit d'un probleme d'affichage. Quel outil utilise tu pour gérer ta base de données ?

  8. #8
    Membre confirmé Avatar de Aizen64
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 561
    Points : 462
    Points
    462
    Par défaut
    Je pense pas que ce soit un problème d'affichage, je suis sous SQL Server 2005.
    Exprimer une différence d'opinion vaut mieux que :

  9. #9
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations forums :
    Inscription : Février 2006
    Messages : 562
    Points : 859
    Points
    859
    Par défaut
    Oui, j'ai bien compris que tu était sous SQL Server 2005 mais il s'agit d'un SGBDR et qui fonctionne bien puisque lors de ton nouvel enregistrement ton identifiant autoincrémenté s'incrémente bien de 1. J'ai fait des essais avec SQL Server Management Studio Express et l'ordre d'affichage des enregistrements se fait bien en fonction de ma colonne ID.

  10. #10
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Attention : en aucun cas une table n'est censée être ordonnée.
    Ce que vous montre SQL Server Management Studio est autre chose, c'est de la cosmétique. Si vous souhaitez afficher les lignes selon un certain ordre, c'est au niveu applicatif qu'il vousfaut le gérer.
    Ce qui est retourné par SQL Server Managment Studio soit provenir d'un index sur votre table qui a ordonné les lignes de cette façon ...

  11. #11
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 847
    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 847
    Points : 52 962
    Points
    52 962
    Billets dans le blog
    6
    Par défaut
    Lisez l'article que j'ai écrit au sujet des erreurs que commettent les débutants. Vous êtes en plein dedans :
    http://sqlpro.developpez.com/cours/sqlaz/erreurs/#L5

    "
    Une table est un sac de bille. Si vous recevez mon sac de bille, avez-vous un moyen quelconque de savoir quelle a été la dernière bille que j'y ai fourrée ? Les SGBDR ont l'habitude de minimiser les coûts de gestion des entrées/sorties de disque. Autrement dit, lorsque je supprime une ligne, celle ci n'est pas effacée, ni compactée. Elle reste un espace mort. Si une nouvelle insertion arrive, il y a fort à parier que votre SGBDR y placera la nouvelle ligne à insérer !
    "


    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. Problème incrémentation dernière ligne
    Par hools31 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 18/06/2015, 16h06
  2. [WD9] Problème dernière ligne d'un fichier csv
    Par cactus666 dans le forum WinDev
    Réponses: 5
    Dernier message: 05/10/2007, 11h49
  3. Problème d'insertion de ligne
    Par bobie dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/08/2007, 13h25
  4. [Oracle] Problème d'insertion de ligne via JDBC
    Par nicofromChina dans le forum JDBC
    Réponses: 3
    Dernier message: 17/07/2007, 12h21
  5. Tableau avec scroll: problème avec la dernière ligne
    Par restricteur dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 24/05/2007, 13h47

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