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 :

réitération d'un calcul dans un update


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2005
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 534
    Par défaut réitération d'un calcul dans un update
    bonjour

    J'ai une table avec 3 enregistrements existant
    La première colonne NumSupp est un compteur (une clé unique)

    J'ajoute des news enregistrements dedans
    Le champ "NumSupp" doit être recalculé aussi
    Je peux connaitre les nouveaux enregistrements par le champ ListeSuppSTS

    je veux créer un compteur
    La première colonne doit se recalculer, s'incrémenter d'un en un, en partant de la valeur MAX existante

    J'ai exécuté le code suivant mais il me calcul une seule fois le MAX :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	update dbo.Suppliers
    	set NumSupp = (select max(NumSupp) from dbo.Suppliers)+ 1
    	where ListeSuppSTS = 1
    donc j'ai la valeur (max + 1) affectée à tous les nouveaux items

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    0
    1 old_item
    2 old_item
    3 old_item
    4 new_item
    4 new_item
    4 new_item
    4 new_item
    4 new_item
    4 new_item
    ...
    Comment obliger le recalcul de la fonction MAX dans la requête pour chaque enregistrement ?

    PS : la prochaine mouture de cette requete utilisera Identity et ses paramètres ... mais je pense qu'on doit pouvoir relancer un calcul quelconque pour chaque enregistrement, non ?

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    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 010
    Billets dans le blog
    6
    Par défaut
    Faire un MAX +1 est la solution la plus catastrophique pour incrémenter une colonne. Pour l'incrémentation des colonnes, il faut tout simplement utiliser la propriété IDENTITY qui est normalisées depuis 2003.
    Lisez l'article que j'ai écrit à ce sujet :
    http://blog.developpez.com/sqlpro/p6...ec-sql-server/

    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/ * * * * *

  3. #3
    Membre éclairé
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2005
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 534
    Par défaut
    bonjour

    merci de ta réponse
    Oui, j'ai tout changé dans cette procédure et ai utilisé bien sûr IDENTITY

    C'est la seule solution viable et recommandable

    @+

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

Discussions similaires

  1. Update calcul dans une colonne petite probleme
    Par mihaispr dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/12/2009, 10h24
  2. Une ch'tite bizarrerie dans les Updates de SQL Server
    Par Wakko2k dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 08/04/2004, 14h14
  3. Calcul dans des champs de saisie
    Par leeloo076 dans le forum ASP
    Réponses: 4
    Dernier message: 07/04/2004, 10h09
  4. calcul dans une requête
    Par blaz dans le forum Langage SQL
    Réponses: 8
    Dernier message: 22/12/2003, 10h31
  5. GROUP BY et HAVING dans un UPDATE
    Par MashiMaro dans le forum Langage SQL
    Réponses: 3
    Dernier message: 26/08/2003, 08h03

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