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

Développement SQL Server Discussion :

Ordre d'un OUTPUT


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    .
    Inscrit en
    Juin 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Juin 2017
    Messages : 2
    Par défaut Ordre d'un OUTPUT
    Bonjour,

    je souhaite insérer plusieurs lignes dans une table A possédant une clef primaire IDENTITY.

    Plutôt que d'envoyer plusieurs requêtes d'INSERT à la base de données, j'aurais souhaité n'en former qu'une :

    INSERT INTO A ... VALUES (infoLigne1),(infoLigne2),(infoLigne3),...

    Souhaitant récupérer les ids générés, je pensais ajouter une clause OUTPUT:

    INSERT INTO A ... OUTPUT INSERTED.ID VALUES (infoLigne1),(infoLigne2),(infoLigne3),...

    En lisant la doc (https://docs.microsoft.com/en-us/sql...e-transact-sql) on peut lire : "There is no guarantee that the order in which the changes are applied to the table and the order in which the rows are inserted into the output table or table variable will correspond.".

    Cela veut dire que rien ne me garantit que la première ligne retournée par l'output concernera bien l'id de la ligne1?

    Merci

  2. #2
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Oui, "output" est un peu comme une table logique (au détail près qu'on ne peut pas requêter dessus à moins de passer par une variable table).

    Donc les lignes ne sont pas ordonnées.

    Cependant, en quoi est-ce gênant ?

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    .
    Inscrit en
    Juin 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Juin 2017
    Messages : 2
    Par défaut
    Merci pour cette réponse!

    En fait, côté application, j'aurai aimé pouvoir retourner les id's aux objets correspondants.

    En prenant un exemple :

    Si un utilisateur passe une commande comportant plusieurs articles. Qu'il existe une table Commande et une table Article avec une clef étrangère vers la table Commande. Avant d'insérer les articles il faut insérer la commande et récupérer son ID (via un SCOPE_IDENTITY() ou un OUTPUT). Une fois fait, je peux insérer mes articles grâce à l'ID retourné par la première requête.

    Maintenant s'il y a plusieurs commandes j'aurai aimé pouvoir utiliser un "INSERT INTO Commande OUTPUT inserted.ID VALUES (infoCmd1),(infoCmd2),..." avec ma liste de commandes, en retour récupérer les ids de ces commandes, puis insérer les articles des commandes via une seconde requête.

    Si l'OUTPUT ne me garantit pas que la première ligne est l'ID de la commande 1 mais potentiellement celle d'une autre, ça risque d'être un beau mélange.

    l'exemple n'est peut-être pas correct... et peut-être y a il de biens meilleurs moyens de procéder...

    Y'a-t-il un moyen de faire ce genre de traitements en deux requêtes ou faut-il une requête pour chaque commande et une dernière pour les articles?

Discussions similaires

  1. [CR8] Groupes nommés par ordre spécifié
    Par PschittN dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 17/05/2004, 23h46
  2. ORDER BY dans un ordre inhabituel
    Par Riam dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 21/03/2003, 13h29
  3. Question : ordre des bits ?
    Par Choupi dans le forum C
    Réponses: 3
    Dernier message: 11/02/2003, 06h22
  4. Ordre de parcours de l'arbre...
    Par Sylvain James dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 01/12/2002, 18h41
  5. [] Tri d'un tableau par ordre alphabétique
    Par cafeine dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 17/09/2002, 08h43

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