Supprimer le dernier enregistrement effectué [Résolu]

Messages postés
103
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
10 septembre 2007
- - Dernière réponse :  Samou - 17 sept. 2019 à 14:27
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 

5 réponses

Meilleure réponse
Messages postés
468
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
30 août 2007
2
1
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

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CodeS-SourceS

Codes Sources 201 internautes nous ont dit merci ce mois-ci

Commenter la réponse de juvamine
Messages postés
468
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
30 août 2007
2
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 ;)

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CodeS-SourceS

Codes Sources 201 internautes nous ont dit merci ce mois-ci

Commenter la réponse de juvamine
Messages postés
20
Date d'inscription
dimanche 26 octobre 2003
Statut
Membre
Dernière intervention
12 août 2009
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
468
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
30 août 2007
2
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
20
Date d'inscription
dimanche 26 octobre 2003
Statut
Membre
Dernière intervention
12 août 2009
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