Supprimer le dernier enregistrement effectué [Résolu]

cispo 103 Messages postés mardi 9 novembre 2004Date d'inscription 10 septembre 2007 Dernière intervention - 28 févr. 2005 à 14:33 - Dernière réponse : juvamine 471 Messages postés vendredi 21 février 2003Date d'inscription 30 août 2007 Dernière intervention
- 12 août 2009 à 11:08
Bonjour, je voudrais savoir si il existe des fonctionnalités toutes
faites pour supprimer le dernier enregistrement d'une table (celui dont
le numéro identifiant est le + élevé) ou si je dois passer par 2
requêtes.





Merci d'avance,
Afficher la suite 

6 réponses

Répondre au sujet
juvamine 471 Messages postés vendredi 21 février 2003Date d'inscription 30 août 2007 Dernière intervention - 2 mars 2005 à 08:35
+3
Utile
il faut passé par 2, mais tu peux les mettre dans une seul:

DELETE FROM Clients WHERE id=(SELECT Max(id) from Clients);

Et voila

++
juvamine

BTS IG, développeurs, et tout le monde ! venez faire un tour sur http://www.webhelp-ig.com
Retrouvez une équipe de développeurs confirmés sur le tchate:
serveur : bastia.zefunChat.net
port : 6667
chan : #programmation
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de juvamine
juvamine 471 Messages postés vendredi 21 février 2003Date d'inscription 30 août 2007 Dernière intervention - 12 août 2009 à 11:08
+1
Utile
MySql autorise un truc surprenant : les order by limit dans les requete de màj

DELETE FROM TaTable ORDER BY ID DESC LIMIT 1


la syntaxe n'est peut etre pas exact exact mais elle y ressemble ;)
Commenter la réponse de juvamine
ghostleretour 21 Messages postés dimanche 26 octobre 2003Date d'inscription 12 août 2009 Dernière intervention - 11 août 2009 à 17:47
0
Utile
Cette solution va générer ce type d'erreur :

"Can’t specify target table for update in FROM clause"

Car on ne peut pas effectuer une lecture et une modification dans une requete imbriquée sur la même table
Commenter la réponse de ghostleretour
juvamine 471 Messages postés vendredi 21 février 2003Date d'inscription 30 août 2007 Dernière intervention - 12 août 2009 à 08:17
0
Utile
C'est la meilleur...
si je fais
DELETE
FROM Table1
WHERE champ4 = (select max(champ4) from Table1);

Dans Access => ça marche
Dans Oracle => ça marche
Dans Interbase => ça marche

je n'ai pas d'autres sgbd sous la main pour tester
mais le moteur sql va effecter le select avant de faire le delete...aucune erreur possible sur ce type de requete. Sauf les spécificités de certains sgbd, ou certaines contraintes d'intégrités qui peuvent gêner.
Commenter la réponse de juvamine
ghostleretour 21 Messages postés dimanche 26 octobre 2003Date d'inscription 12 août 2009 Dernière intervention - 12 août 2009 à 10:25
0
Utile
Ah ben voila, sur les autre peut etre, moi je n'ai eu l'occasion de le tester que sur MySQL et ca ne fonctionne malheureusement pas.

Je suis passé par deux requetes séparées, mais je trouvais ca dommage qu'une requete si simple ne fonctionne pas.
Commenter la réponse de ghostleretour
juvamine 471 Messages postés vendredi 21 février 2003Date d'inscription 30 août 2007 Dernière intervention - 12 août 2009 à 11:04
0
Utile
Je ne donnerai pas mon sentiment sur MySql, je risquerais d'être désagrable.
Ils ont simplement "oublier" d'implémenter les standarts de la norme (et beaucoup...)
Commenter la réponse de juvamine

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.