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

SQL Procédural MySQL Discussion :

AUTO_INCREMENT et REPLACE


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 82
    Par défaut AUTO_INCREMENT et REPLACE
    bonjour

    j'ai une table

    matable(
    id INT NOT NULL AUTO_INCRMENT PRIMARY KEY,
    nom TEXT UNIQUE
    prenom TEXT
    )

    je voudrais faire des insertions dans la table de sorte que si
    un nom existe je fais un update et si le nom n'existe pas je fais un insert
    j'ai pensé utilisé REPLACE
    mais enfait j'ai remarque que REPLACE fait un DELETE puis un INSERT de tel façon que l'id change or je ne voudrais pas qu'il change car il represente beaucoup de jointures avec d'autres tables.

    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 82
    Par défaut encore une question
    j'ai trouvé ça sur le net :

    If you don't want your autoincrementing field to change with a REPLACE query, create a UNIQUE INDEX which includes that field and pass the existing value for that field in the query.

    mais je n'ai pas compris.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 23
    Par défaut
    Salut,

    Très bonne idée d'avoir pensé à REPLACE, mais effectivement, cette technique fais des DELETE / INSERT. Dommage.

    Fais plutôt cela dans ton code.
    C'est certainement plus simple que tu cherches toi même dans la base si le nom existe. Ensuite, soit tu l'insère, soit tu le mets à jour...

    Ca prends pas trop longtemps à développer

    @+

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 82
    Par défaut Ce n'est pas si évident que ça
    je travaille de cette maniere
    je recois des XML
    je les traite avec XSLT pour les transformer en requetes SQL
    avec PHP , je fais les injections dans la base en récupérant tout simplement un fichier .SQL avec des requetes.

    donc faudrait ke je trouve une solution
    finalement , je me suis dit que je b'au qu'à faire des mises àj jour dans les autres tables
    mais ça c'est une autre question

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 13
    Par défaut
    j ai posé la question un peu plus loi n

    http://www.developpez.net/forums/viewtopic.php?t=340273

    ma solution serait de passer sur sql 4.1.x qui possede cette fonction : DUPLICATE KEY UPDATE
    j attend maintenant la reponse de mon hebergeur.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 82
    Par défaut oki
    merci pour ta réponse. c'est très interessant.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 82
    Par défaut encore une question
    j''utilise une clé auto incrément
    j'ai inséré 3 enregistrement
    donc j'avé une table avec une colonne :
    clé
    1
    2
    3

    après j'ai supprimé les deux derniers enregistrements donc il restait un seul
    cle
    1

    j'ai inséré un nouvel enregistrement
    cle
    1
    4

    lje ne comprend pas le 4 , ça ne devrait pas être 2 car j'avais compris que AUTO_INCREMENT prenait le max des clés+1 ???
    [/u]

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 13
    Par défaut
    l auto increment conserve la derniere clé et incremente depuis cette clé, meme si d'autres ont été suprimées. tout simplement pour eviter tout conflit sur un insert. ou sur des liaisons inter-tables.
    un unique ID en auto increment peu servir de jointure sur une seconde table, imagine donc le bord..l s'il ne suivait pas le systeme actuel

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

Discussions similaires

  1. [ODBC] Fonction Replace en ODBC
    Par Alexandre T dans le forum Access
    Réponses: 4
    Dernier message: 10/01/2007, 11h02
  2. [auto_increment] Récupérer la prochaine valeur
    Par Kimael dans le forum Requêtes
    Réponses: 10
    Dernier message: 01/04/2004, 17h31
  3. Pb AUTO_INCREMENT
    Par Fabsou dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 23/01/2004, 15h10
  4. [postgreSQL] auto_increment
    Par jah dans le forum Requêtes
    Réponses: 5
    Dernier message: 10/06/2003, 10h21
  5. Cherche Fonction du style replace...
    Par sdchamplas dans le forum Langage SQL
    Réponses: 4
    Dernier message: 31/03/2003, 13h54

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