Supprimer le dernier enregistrement effectué [Résolu]

Messages postés
103
Date d'inscription
mardi 9 novembre 2004
Dernière intervention
10 septembre 2007
- 28 févr. 2005 à 14:33 - Dernière réponse :
Messages postés
471
Date d'inscription
vendredi 21 février 2003
Dernière intervention
30 août 2007
- 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 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
471
Date d'inscription
vendredi 21 février 2003
Dernière intervention
30 août 2007
2 mars 2005 à 08:35
3
Merci
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

Merci juvamine 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de juvamine
Messages postés
471
Date d'inscription
vendredi 21 février 2003
Dernière intervention
30 août 2007
12 août 2009 à 11:08
1
Merci
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
Messages postés
21
Date d'inscription
dimanche 26 octobre 2003
Dernière intervention
12 août 2009
11 août 2009 à 17:47
0
Merci
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
Messages postés
471
Date d'inscription
vendredi 21 février 2003
Dernière intervention
30 août 2007
12 août 2009 à 08:17
0
Merci
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
Messages postés
21
Date d'inscription
dimanche 26 octobre 2003
Dernière intervention
12 août 2009
12 août 2009 à 10:25
0
Merci
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
Messages postés
471
Date d'inscription
vendredi 21 février 2003
Dernière intervention
30 août 2007
12 août 2009 à 11:04
0
Merci
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.