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 incrément inversé


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif Avatar de Momodedf
    Inscrit en
    Juillet 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Juillet 2007
    Messages : 246
    Points : 221
    Points
    221
    Par défaut Auto incrément inversé
    Bonjour,

    Un nom de topic étrange pour un besoin qui ne l'est pas moins ^^
    (dur dur de trouver des bon mot clef sur google ....)

    Alors voilà, j'aimerais (à la création de ma table) créer un champ auto incrémenté (bon jusque là c'est tout con).
    Le probleme c'est que je voudrais que chaque nouvel enregistrement prenne l'id 1 et donc que les autres id soient tous incrémenté.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 181
    Points : 189
    Points
    189
    Par défaut
    tu as essayé de faire un update de tous les enregistrements en mettant id = id+1 et ensuite d'insérer l'id 1
    pour ça il faudrait pas d'auto incrément
    ...

  3. #3
    Membre confirmé Avatar de nounetmasque
    Inscrit en
    Janvier 2003
    Messages
    494
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 494
    Points : 570
    Points
    570
    Par défaut
    La technique proposée fonctionnera avec un trigger !

    Par curiosité, pourquoi utiliser un auto-increment inversé ?
    "Dieu reste muet, si seulement nous pouvions convaincre l'être humain d'en faire autant."

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 181
    Points : 189
    Points
    189
    Par défaut
    Citation Envoyé par nounetmasque Voir le message
    La technique proposée fonctionnera avec un trigger !

    Par curiosité, pourquoi utiliser un auto-increment inversé ?
    d'accord avec toi pour l'auto incrément inversé, par contre je ne le ferais pas forcément avec un trigger (un peu de code avant l'insert remplace amplement le trigger que je n'ai jamais utilisé faut que j'apprenne)
    ...

  5. #5
    Membre confirmé Avatar de nounetmasque
    Inscrit en
    Janvier 2003
    Messages
    494
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 494
    Points : 570
    Points
    570
    Par défaut
    Citation Envoyé par sebdu Voir le message
    un peu de code avant l'insert remplace amplement le trigger
    Il me semble qu'un trigger sur un évenement before insert évitera une bidouille puisque le but est de mettre à jour des champs en fonction du paramétrage de ton trigger. Dans cet exemple, avant chaque insertion dans la table, il faudra incrémenter toutes les colonnes.
    "Dieu reste muet, si seulement nous pouvions convaincre l'être humain d'en faire autant."

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 181
    Points : 189
    Points
    189
    Par défaut
    Citation Envoyé par nounetmasque Voir le message
    Il me semble qu'un trigger sur un évenement before insert évitera une bidouille puisque le but est de mettre à jour des champs en fonction du paramétrage de ton trigger. Dans cet exemple, avant chaque insertion dans la table, il faudra incrémenter toutes les colonnes.
    d'accord avec toi sur le fait que ce soit une bidouille mais les anciennes versions de mysql n'ont pas les triggers et ça m'a sauvé de la misère plus d'une fois
    sinon je suis pour le trigger qui sera sans doute plus performant que la bidouille
    ...

  7. #7
    Membre actif Avatar de Momodedf
    Inscrit en
    Juillet 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Juillet 2007
    Messages : 246
    Points : 221
    Points
    221
    Par défaut
    tu as essayé de faire un update de tous les enregistrements en mettant id = id+1 et ensuite d'insérer l'id 1
    pour ça il faudrait pas d'auto incrément
    Bien sur mais c'est un peut lourd je me demande si ça va pas ramer un peut quand le nombre d'enregistrement sera important (100k enregistrement par exemple).

    En fait j'esperais qu'il y ait cette fonctionalité via phpmyadmin

    Par curiosité, pourquoi utiliser un auto-increment inversé ?
    Wahh la classe, auto-incrément inversé rentre déjà dans le jargon

    En fait je créé des statistiques assez souvent (plusieurs fois par jour) et j'aimerais les stoquer.
    Mais il me faut recuperer la derniere statistique enregistrée, ça aurait été facile comme ça, le dernier enregistrement aurait toujoours été celui à l'id 1.


    PS : chéquoi un trigger ?

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 181
    Points : 189
    Points
    189
    Par défaut
    Citation Envoyé par Momodedf Voir le message

    PS : chéquoi un trigger ?
    c'est ça
    ...

  9. #9
    Membre confirmé
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mars 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Mars 2006
    Messages : 400
    Points : 562
    Points
    562
    Par défaut
    Citation Envoyé par Momodedf Voir le message
    En fait je créé des statistiques assez souvent (plusieurs fois par jour) et j'aimerais les stoquer.
    Mais il me faut recuperer la derniere statistique enregistrée, ça aurait été facile comme ça, le dernier enregistrement aurait toujoours été celui à l'id 1.
    Avec un auto-incrément inversé, à chaque fois que des données sont insérés dans la table, tous les enregistrements seront mis à jour (incrémentation de 1).
    Tu fais cela pour gagner du temps lors de l'accès aux données (tu ne récupère que le dernier enregistrement).
    Cependant, les insertions de données seront plus lentes (UPDATE avant INSERT).

    Je suppose que tu insères des données plus souvent que tu n'y accèdes.
    Dans ce cas, ne perds-tu pas plus de temps à l'insertion des données que tu n'en gagnes lors de l'accès aux données ?

  10. #10
    Membre actif Avatar de Momodedf
    Inscrit en
    Juillet 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Juillet 2007
    Messages : 246
    Points : 221
    Points
    221
    Par défaut
    Non j'y accede plus souvent que je ne met à jour.

    Je lis environ 20 fois par jour et j'écris 3 à 4 fois par jour.

  11. #11
    Membre confirmé Avatar de nounetmasque
    Inscrit en
    Janvier 2003
    Messages
    494
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 494
    Points : 570
    Points
    570
    Par défaut
    Si tu veux récupérer le dernier enregistrement de ta base, je ne te conseille pas un auto-increment inversé et ceci pour les mêmes raisons que celles exposées par jeremya.
    Par contre une requette de ce style devrait convenir et ceci avec des tables de 100k enregistrements (pense à placer un index sur ton id ).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT * 
    FROM maTable t1, (SELECT max(id) FROM maTable ORDER BY id) t2
    WHERE t1.id = t2.id
    Je te laisse le soin d'adapter cette requette à ton besoin.
    "Dieu reste muet, si seulement nous pouvions convaincre l'être humain d'en faire autant."

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

Discussions similaires

  1. Pb d'auto incrémentation sous interbase !!!
    Par le.clown dans le forum InterBase
    Réponses: 2
    Dernier message: 26/02/2004, 14h11
  2. prbl auto-incrémente
    Par cb dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 28/11/2003, 11h32
  3. Dernière clé auto incrémenté ?
    Par WOLO Laurent dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 15/11/2003, 10h41
  4. [CODE] auto incrémentation ?
    Par Roi dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 25/09/2003, 15h09
  5. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 00h10

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