[MySQL] Comment effacer simplement la dernière entrée ?

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par SuperPJ, 30 Octobre 2005.

  1. SuperPJ
    SuperPJ WRInaute occasionnel
    Inscrit:
    15 Janvier 2005
    Messages:
    413
    J'aime reçus:
    0
    Salut à tous,

    Existe-t-il un moyen en une seule requête d'effacer la dernière entrée d'une table ?

    Pour l'instant je fais via PHP :
    Code:
    SELECT MAX(id) as maxid FROM table;
    DELETE FROM table WHERE id='$maxid';
    ... mais ca nécessite 2 requêtes SQL donc ce n'est pas très optimal.


    J'ai donc essayé plein de trucs mais rien ne marche :
    Code:
    => DELETE FROM table WHERE id=MAX(id);
    => DELETE FROM table WHERE id=LAST(id);
    => DELETE FROM table ORDER BY id DESC LIMIT 1;
    error ... error ... error :evil:
    à noter que la version MySQL de mon hébergeur ne reconnait pas non plus les SubQueries.

    Que faire :cry: ?
     
  2. spidetra
    spidetra WRInaute passionné
    Inscrit:
    7 Juillet 2003
    Messages:
    1 215
    J'aime reçus:
    0
  3. SuperPJ
    SuperPJ WRInaute occasionnel
    Inscrit:
    15 Janvier 2005
    Messages:
    413
    J'aime reçus:
    0
    Oui ça le devrait mais apparemment mon hébergeur utilise une version trop vieille de MySQL :(
    Nous sommes sous la version 3.23.58
     
  4. spidetra
    spidetra WRInaute passionné
    Inscrit:
    7 Juillet 2003
    Messages:
    1 215
    J'aime reçus:
    0
    Ha oui, quand même, désolé pour toi :!:
    Il est pas capable de faire un upgrade de sa version de MySQL, ton hébergeur ?
     
  5. spidetra
    spidetra WRInaute passionné
    Inscrit:
    7 Juillet 2003
    Messages:
    1 215
    J'aime reçus:
    0
  6. spidetra
    spidetra WRInaute passionné
    Inscrit:
    7 Juillet 2003
    Messages:
    1 215
    J'aime reçus:
    0
  7. SuperPJ
    SuperPJ WRInaute occasionnel
    Inscrit:
    15 Janvier 2005
    Messages:
    413
    J'aime reçus:
    0
    J'espère bien ! Je viens de lui poser la question sur notre forum interne ...

    En effet, je ne vois pas l'intérêt de tourner sous de vieilles versions alors que les plus récentes nous permettent d'optimiser nos requêtes et donc de décharger leurs serveurs ... en ce moment je suis souvent obligé de faire plusieurs requêtes qui n'en nécessiteraient qu'une seule si nous étions à jour :( cela dit faut voir s'ils n'upgradent pas à cause de problèmes d'incompatibilité qui feraient planter certains vieux scripts PHP faits sous MySQL-3.2 ...
     
  8. DreamJap
    DreamJap WRInaute discret
    Inscrit:
    6 Mai 2005
    Messages:
    84
    J'aime reçus:
    0
    Il me semble que les versions de MySQL latest sont compatible avec les anciennes du moins avec les scripts PHP.
     
  9. TOMHTML
    TOMHTML WRInaute accro
    Inscrit:
    25 Août 2004
    Messages:
    2 502
    J'aime reçus:
    0
    fais gaffe quand même PJ, si tu as mis un ID avec incrémentation à chaque nouvelle entrée
    car si tu supprime l'entrée n°10, il ne te reste plus que l'entrée n°9 et les précédentes, mais si tu ajoute une nouvelle entrée elle sera numérotée n°11 et pas n°10, malheureusement

    méfie toi donc, petit scarabé ;)
     
  10. spidetra
    spidetra WRInaute passionné
    Inscrit:
    7 Juillet 2003
    Messages:
    1 215
    J'aime reçus:
    0
    et pas n° 10.... heureusement !
     
  11. SuperPJ
    SuperPJ WRInaute occasionnel
    Inscrit:
    15 Janvier 2005
    Messages:
    413
    J'aime reçus:
    0
    Moi aussi je pensais comme toi mais renuméroter les IDs à chaque suppression(s) ralentirait à fond MySQL ;)

    Et puis l'autre raison c'est que l'ID est souvent utilisé pour identifier de façon unique un client. Imagine tu es le client Adsense n°123456 et que Google vient de supprimer le client n°123455 parce qu'il passait son temps à cliquer sur ses bannières :D. Si SQL renumérotait les IDs, tu prendrais alors la place du client banni et bye bye tes revenus Adsense :D
     
  12. spidetra
    spidetra WRInaute passionné
    Inscrit:
    7 Juillet 2003
    Messages:
    1 215
    J'aime reçus:
    0
    Normalement, c'est gérer par les règles d'intégrité référentielle ( on delete cascade, on update cascade ) ou par des triggers.
    ce qui commence à être pris en compte dans MySQL 5.0
    donc normalement pas de risque pour tes revenus adsense :)

    Les ID auto-incrément se sont là que pour identifier de manière unique un enregistrement, ils n'ont "pas de sens" dans une DB.
    donc c'est vraiment pas grave, s'il y a des trous, et c'est bc plus simple à gérer. Si MySQL reprenait le n° 10, il faudrait être sûr d'avoir des devs en béton.


    C'est plus grave pour les champs qui auraient un sens :
    Ex n° de facture pour une comptabilité

    Le fisc aime pas trop voir des trous dans les séries de n° de facture, et donc là la gestion doit être plus fine.
     
  13. SuperPJ
    SuperPJ WRInaute occasionnel
    Inscrit:
    15 Janvier 2005
    Messages:
    413
    J'aime reçus:
    0
    Je viens d'obtenir cette réponse de mon hébergeur : "il n'est pas prévu de les migrer car la procédure de migration ne garantit pas une compatibilité à 100% et certains sites ne fonctionneraient plus".

    Voili voilou :(
     
  14. TOMHTML
    TOMHTML WRInaute accro
    Inscrit:
    25 Août 2004
    Messages:
    2 502
    J'aime reçus:
    0
    moins d'une dizaine à tout casser
    franchement si le site fonctionne avec cette version de php, ça fonctionne assurément avec la version supérieure ! Quelques fonctions seraient devenues désuettes mais elle fonctionneraient toujours je pense, non ?
     
  15. SuperPJ
    SuperPJ WRInaute occasionnel
    Inscrit:
    15 Janvier 2005
    Messages:
    413
    J'aime reçus:
    0
    A priori je suis de ton avis TOMHTML, surtout pour une application aussi sensible et aussi répandue que MySQL. Mais bon c'est la réponse qui m'a été donnée par l'hébergeur !

    En tout cas si tu veux une version récente de MySQL je te conseille pas mon hébergeur ;) ah t'es déjà chez eux ? Je me demande qui est le lascar qui te l'a conseillé :D jrigole ;)
     
  16. spidetra
    spidetra WRInaute passionné
    Inscrit:
    7 Juillet 2003
    Messages:
    1 215
    J'aime reçus:
    0
    on peut lui conseiller une autre option à ton hébergeur.... changer de métier
     
Chargement...
Similar Threads - [MySQL] effacer simplement Forum Date
[résolu][mysql] faire un "NOT LIKE" sur une chaîne contenant des / Développement d'un site Web ou d'une appli mobile 25 Octobre 2014
[MySQL] Liste (select) avec des lignes au hasard Développement d'un site Web ou d'une appli mobile 23 Octobre 2014
[MySQL] Requête SELECT et INSERT entre 3 tables liées+Aide Développement d'un site Web ou d'une appli mobile 30 Avril 2014
[MySQL] Nombre d'enregistrements sur des horaires précis Développement d'un site Web ou d'une appli mobile 19 Juillet 2013
[MYSQL] Comment remplacer caractères dans tous les champs de toutes les tables d'une base? Développement d'un site Web ou d'une appli mobile 11 Juillet 2013
[MYSQL] Une sorte de "OR JOIN" ? Développement d'un site Web ou d'une appli mobile 5 Juillet 2013
[MySQL] sélectionner la dernière note pour chaque élève en une seule requète ? Développement d'un site Web ou d'une appli mobile 12 Avril 2012
[Mysql] Requête PDO avec variable php Développement d'un site Web ou d'une appli mobile 16 Février 2012
[Mysql] Requête PDO aléatoire Développement d'un site Web ou d'une appli mobile 7 Février 2012
[MYSQL] Tri par date Développement d'un site Web ou d'une appli mobile 7 Septembre 2011
[MySQL] rechercher une valeur dans un champ sérialisé Développement d'un site Web ou d'une appli mobile 10 Août 2011
[MySQL] Requête SELECT entre 3 tables liées Développement d'un site Web ou d'une appli mobile 10 Août 2011
[MySQL] addslashes et stripslashes Développement d'un site Web ou d'une appli mobile 9 Août 2011
[résolu] [mysql] Conditions WHERE avec AND et OR Développement d'un site Web ou d'une appli mobile 13 Mai 2011
[mysql] trier les résultats d'une requête selon une table non liée à la requête Développement d'un site Web ou d'une appli mobile 15 Avril 2011
[résolu] [mysql] passer un champ à une valeur donnée pour tous les enregistrements Développement d'un site Web ou d'une appli mobile 25 Mars 2011
[MySQL] INSERT / UPDATE conditionnel Développement d'un site Web ou d'une appli mobile 1 Février 2011
[mysql] LIMIT utile sur un champ indexé ? Développement d'un site Web ou d'une appli mobile 8 Décembre 2010
[mySQL] Découper une table et gagner en performance ? Développement d'un site Web ou d'une appli mobile 9 Janvier 2010
[MySQL] Récupérer la première ligne d'un GROUP BY Développement d'un site Web ou d'une appli mobile 14 Décembre 2009