Requête SQL de suppression de messages

Tout ce qui peut vous être utile pour aller plus vite dans l'exploration, etc...
Hors ligne Pascal
#1
Avatar du membre
Messages : 2674
Enregistré le : 01 septembre 2015

Requête SQL de suppression de messages

Message le

Gemani a écrit : 26 septembre 2024, 13:11 Si j'avais plus confiance en moi, je lancerai une requête SQL diectement sur la base de donnees qui va bien pour isoler les messages d'orphelins et automatiquement demander leur suppression mais j'ai peur de faire une connerie et que l'on perte 7ne belle partie du forum. La maintenance y serait peut-être parvenu sans problème et moi j'ai pourtant bien étudié le SQL dans mes cours informatique, c'est même très agréable comme langage a utiliser. C'est presqu'un jeu.
Il est possible de créer une requête SQL pour identifier et supprimer des messages orphelins, ainsi que pour supprimer tous les messages d'un membre spécifique. Voici comment cela pourrait être fait.

1. Identifier et supprimer les messages orphelins

Les messages orphelins peuvent être définis comme des messages qui n'ont plus de fil de discussion ou dont les membres ont été supprimés. Pour isoler ces messages, on peut vérifier s'il existe une entrée correspondante dans la table des discussions ou des membres.

-- Suppression des messages orphelins (sans discussion correspondante)
DELETE FROM messages
WHERE thread_id NOT IN (SELECT id FROM threads);


-- Suppression des messages orphelins (sans membre correspondant)
DELETE FROM messages
WHERE member_id NOT IN (SELECT id FROM members);


Dans cet exemple :

messages est la table contenant les messages du forum.
threads est la table contenant les fils de discussion (ou sujets).
members est la table contenant les membres.

La première requête supprime les messages dont le thread_id n'existe plus dans la table des fils de discussion, et la seconde supprime les messages dont le member_id n'existe plus dans la table des membres.

2. Supprimer tous les messages d'un membre spécifique

Pour supprimer tous les messages d'un membre particulier, on peut cibler son identifiant (member_id).


-- Suppression de tous les messages d'un membre spécifique
DELETE FROM messages
WHERE member_id = [MEMBER_ID];


Dans cette requête, il suffit de remplacer [MEMBER_ID] par l'ID du membre que vous souhaitez cibler. Par exemple, si l'ID du membre est 123, la requête deviendrait :

DELETE FROM messages
WHERE member_id = 123;


Précautions

Sauvegarde : Avant d'exécuter ces requêtes, il est conseillé de faire une sauvegarde complète de la base de données, car la suppression de données est irréversible.
Vérification : Il est possible de tester ces requêtes sans supprimer de données en remplaçant DELETE par SELECT * pour voir quels enregistrements seraient supprimés.
Hors ligne Gemani
#2
Avatar du membre
Messages : 8890
Enregistré le : 25 septembre 2008
Localisation : Sud des Landes, à 10 mn des plages! Photo de falaises sur les îles Féroé
Sexe :
Zodiaque :

Message le

Merci beaucoup Pascal mais je ne peux pas m'y risquer !

Si tout le monde vote pour elle, elle aura gain de cause et je supprimerai facilement tous ses messages et son compte utilisateur.

J'ai vraiment trop peur d'utiliser ses requêtes et ce n'est pas sûr qu'on puisse réinjecter la base de donnée parce que malheureusement , il y a certains messages qui sont trop longs et ceux-ci pourraient être coupés lors de la réinjection. C'est la maintenance qui m'avait dit. En plus de cela je ne maîtrise pas. Je ne suis plus un informaticien, je n'ai jamais vraiment voulu l'être sinon j'aurais fait carrière. Il y en a qui sont doués pour ça comme la maintenance...

Je me souviens une fois en stage de langage C dans une entreprise qui vendait des logiciels de gestion de forfaits aux stations de ski, je devais gérer la bande journal, la suppression des données, l'impression des données, etc...
et donc j'ai fait mon développement, j'ai lancé l’exécutable et quand j'ai demandé la suppression de la bande journal, et au lieu de supprimer juste la bande journal, il a supprimé tous les fichiers présents dans le dossier où l'exécutable était présent, on a récupéré tous les fichiers grâce au serveur mais ça m'a marqué !

Retourner vers « Informations pratiques »