如果刪除了行,則觸發將其插入到另一個表中
P粉741223880
P粉741223880 2024-02-21 15:22:36
0
1
379

我正在嘗試建立一個觸發器,將已刪除的一行複製到另一個表中。到目前為止,當我刪除一行時,我只是將整個第一個表複製到第二個表中,這不是很有用。

表1是帶有comment_id、file_id、user_id、comment_text、comment_datetime和parent的評論

表2是comment_log,包含deleted_comment_id、file_id、user_id、comment_text、comment_datetime和comment_deletion_datetime。

所以我只想將使用者、版主或管理員刪除的評論儲存在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

這是我到目前為止所得到的,我已經嘗試過像後面的 WHERE 之類的東西,但我不知道要放在那裡。 old.comment_id 應該給我舊的 id,但我不知道如何從評論表中獲取具有該 id 的評論。

P粉741223880
P粉741223880

全部回覆(1)
P粉546138344

被刪除的行的列在觸發器中可用作為 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;
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板