Astuce SQL

J’ai récemment eu besoin d’insérer un enregistrement dans une table d’une base de données. La particularité est que je devais insérer cet enregistrement avec un identifiant de 1 or il y avais déjà des enregistrements et donc un enregistrement ayant pour identifiant 1.

Le principe est simple, il suffit de décaler les identifiants de 1. Malheureusement, la mise en oeuvre l’est moins car les identifiants étant uniques et les modifications se faisant dans l’ordre ascendant des identifiants, la requête suivante provoque une erreur indiquant que l’identifiant 2 existe déjà :

UPDATE ma_table SET id=id+1;

La solution est elle aussi simple en principe : il suffit de faire cette mise à jour des identifiants en commencant par la fin. Qu’à cela ne tienne, l’instruction UPDATE permet d’utiliser une clause ORDER BY :

UPDATE ma_table SET id=id+1 ORDER BY id DESC;

Personnellement, je ne connaissais pas cette possibilité et je trouve cela génial.

Ce contenu a été publié dans Développement Web. Vous pouvez le mettre en favoris avec ce permalien.

6 réponses à Astuce SQL

  1. Christophe dit :

    Ouais merci d’avoir fait tourner l’astuce, je pense qu’elle me servira un jour 🙂

  2. YoGi dit :

    Ah oui, terrible ! merci pour l’info

  3. sKD dit :

    à savoir 🙂

  4. Edmond dit :

    Dans mon Marques-pages ! Merci 🙂

  5. NiKo dit :

    Ba moi je le savais, -eu :p

    On peut même calculer des trucs à la volée, du style :

    ‘UPDATE images SET note=((nbvotes*note)+’.$_GET[‘note’].’)/(nbvotes+1), nbvotes=nbvotes+1 WHERE id=’.$_GET[‘id’]

  6. Fred Bird dit :

    hé hé, pas con. A garder sous le coude.

Les commentaires sont fermés.