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

Langage SQL Discussion :

update du colonne avec entier incrementé


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 102
    Par défaut update du colonne avec entier incrementé
    bonjour,
    J' ai un souci je ne sais plus comment faire un update.
    voila je m'explique

    ma_table contient une col1 NBA, NBA,.... (col1 est la clé) et une colonne col2 qui est actuellement vide

    et je souhaiterais avoir dans col2 1,2,3,4...

    or je n'arrive pas à créer d'update, voila ce que j'ai écris :
    J'ai déjà rempli la première ligne de la col2 avec "1"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    update ma_table t1
    set t1.col2 = (select max(t2.col2)+1 from ma_table t2)
    Le souci de mon code c'est "(select max(t2.col2)+1 from ma_table t2)" n'est évalué qu'une fois. Je voudrais donc qu'il soit ré-évalué à chaque instructions mais j'y arrive

    Si quelqu'un pouvait m'aider cela m'eviterais de sortir l'artirille lourde en PL/SQL, au fait je bosse sous Oracle 8i.
    Merci

  2. #2
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut Re: update du colonne avec entier incrementé
    Citation Envoyé par superfly
    bonjour,
    J' ai un souci je ne sais plus comment faire un update.
    voila je m'explique

    ma_table contient une col1 NBA, NBA,.... (col1 est la clé) et une colonne col2 qui est actuellement vide

    et je souhaiterais avoir dans col2 1,2,3,4...

    or je n'arrive pas à créer d'update, voila ce que j'ai écris :
    J'ai déjà rempli la première ligne de la col2 avec "1"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    update ma_table t1
    set t1.col2 = (select max(t2.col2)+1 from ma_table t2)
    Le souci de mon code c'est "(select max(t2.col2)+1 from ma_table t2)" n'est évalué qu'une fois. Je voudrais donc qu'il soit ré-évalué à chaque instructions mais j'y arrive

    Si quelqu'un pouvait m'aider cela m'eviterais de sortir l'artirille lourde en PL/SQL, au fait je bosse sous Oracle 8i.
    Merci

    Alors Oracle dans mes souvenirs, l'increment se faisait avec
    une sequence (nextval et curval ...)
    ex :
    http://www-eleves-isia.cma.fr/documentation/OracleDoc/CURRVAL-AND-NEXTVAL.html

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 102
    Par défaut
    Merci Vttman, mais je connais cette technique et je voudrais pas l'utiliser car à mon avis cela peut se faire sans créer une séquence.
    En faite c'est une opération qui ne sera faite qu'une fois.

    Merci

  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 022
    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 022
    Billets dans le blog
    6
    Par défaut
    Pour qu'elle soit exécuter à chaque ligne il faut que la sous requête soit corrélée avec la requête principale.

    Les alias sont interdit dans les tables cibles d'UPDATE, DELETE, INSERT.

    mais si c'est pour générer une clef auto incrémenté cela risque de ne pas être très beau.

    A lire :
    http://sqlpro.developpez.com/ClefsAu...ClefsAuto.html

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

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/04/2011, 18h15
  2. Update de colonne avec des vides
    Par backdraf dans le forum Développement
    Réponses: 5
    Dernier message: 04/06/2010, 12h45
  3. Faire un update sur colonnes avec condition
    Par calou_33 dans le forum SQL
    Réponses: 2
    Dernier message: 05/03/2009, 18h33
  4. [Oracle] Update sur 1 colonne avec condition existence (SUBSTR)
    Par magic charly dans le forum Langage SQL
    Réponses: 6
    Dernier message: 20/04/2006, 14h57
  5. Update dans SYBASE avec jointure sur 2 colonnes
    Par metheorn dans le forum Sybase
    Réponses: 2
    Dernier message: 24/06/2005, 17h51

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