Dur Comme Faire

Aller au contenu | Aller au menu | Aller à la recherche

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.

vendredi 5 août 2005 à 20h54 - Développement Web Fil de syndication

Rétroliens

Aucun rétrolien pour le moment.

Les rétroliens pour ce billet sont fermés.

Commentaires

Gravatar de Christophe

Ouais merci d'avoir fait tourner l'astuce, je pense qu'elle me servira un jour :-)

Christophe le vendredi 5 août 2005 à 23h57 Icone du permalien

Gravatar de YoGi

Ah oui, terrible ! merci pour l'info

YoGi le samedi 6 août 2005 à 00h44 Icone du permalien

Gravatar de sKD

à savoir :)

sKD le dimanche 7 août 2005 à 15h37 Icone du permalien

Gravatar de Edmond

Dans mon Marques-pages ! Merci :)

Edmond le lundi 8 août 2005 à 09h05 Icone du permalien

Gravatar de NiKo

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']

NiKo le lundi 15 août 2005 à 13h46 Icone du permalien

Gravatar de Fred Bird

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

Fred Bird le mardi 23 août 2005 à 10h46 Icone du permalien

Ajouter un commentaire

Les commentaires pour ce billet sont fermés.

XHTML - CSS - DotClear - Technorati

Les billets de ce blog sont sous licence Creative Commons