Heim > Fragen und Antworten > Hauptteil
Ich versuche einen Trigger zu erstellen, der eine gelöschte Zeile in eine andere Tabelle kopiert. Wenn ich bisher eine Zeile lösche, kopiere ich einfach die gesamte erste Tabelle in die zweite Tabelle, was nicht sehr nützlich ist.
Tabelle 1 enthält die Kommentare mit comment_id, file_id, user_id, comment_text, comment_datetime und parent
Tabelle 2 ist comment_log, das die gelöschte_Kommentar-ID, die Datei-ID, die Benutzer-ID, den Kommentartext, das Kommentardatum und das Löschdatum des Kommentars enthält.
Ich möchte also nur von Benutzern, Moderatoren oder Administratoren gelöschte Kommentare in comment_log speichern.
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
Das ist es, was ich bisher habe. Ich habe Dinge wie ein WO dahinter ausprobiert, weiß aber nicht, wo ich es hinstellen soll. old.comment_id sollte mir die alte ID geben, aber ich weiß nicht, wie ich den Kommentar mit dieser ID aus der Kommentartabelle abrufen kann.
P粉5461383442024-02-22 12:38:58
被删除的行的列在触发器中可用作为 OLD.*
,所以我会这样做:
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;