Maison  >  Questions et réponses  >  le corps du texte

Si une ligne est supprimée, déclenchez son insertion dans une autre table

J'essaie de créer un déclencheur qui copie une ligne supprimée dans une autre table. Jusqu'à présent, lorsque je supprime une ligne, je copie simplement l'intégralité du premier tableau dans le deuxième tableau, ce qui n'est pas très utile.

Le tableau 1 contient les commentaires avec comment_id, file_id, user_id, comment_text, comment_datetime et parent

Le tableau 2 est comment_log, qui contient delete_comment_id, file_id, user_id, comment_text, comment_datetime et comment_deletion_datetime.

Je souhaite donc uniquement stocker les commentaires supprimés par les utilisateurs, modérateurs ou administrateurs dans comment_log.

INSERT INTO comment_log(deleted_comment_id, file_id, user_id, comment_text,comment_datetime, comment_deletion_datetime)
SELECT comment.comment_id, file_id, user_id, comment_text, comment_datetime, CURRENT_TIMESTAMP
FROM comment

C'est ce que j'ai jusqu'à présent, j'ai essayé des choses comme un OÙ derrière mais je ne sais pas où le mettre. old.comment_id devrait me donner l'ancien identifiant, mais je ne sais pas comment obtenir le commentaire avec cet identifiant dans la table des commentaires.

P粉741223880P粉741223880241 Il y a quelques jours326

répondre à tous(1)je répondrai

  • P粉546138344

    P粉5461383442024-02-22 12:38:58

    La colonne de la ligne supprimée est disponible dans le déclencheur en tant que OLD.*, je ferais donc ceci :

    INSERT INTO comment_log
    SET deleted_comment_id = OLD.comment_id, 
        file_id = OLD.file_id, 
        user_id = OLD.user_id,
        comment_text = OLD.comment_text,
        comment_datetime = OLD.comment_datetime, 
        comment_deletion_datetime = CURRENT_TIMESTAMP;

    répondre
    0
  • Annulerrépondre