mariadb 触发器在删除行时将行插入另一个表

2jcobegt  于 2022-11-08  发布在  其他
关注(0)|答案(1)|浏览(131)

我试图创建一个触发器,将删除的一行复制到另一个表中。到目前为止,我只是在删除一行时将整个第一个表复制到第二个表中,不是很有用。
表1是具有注解标识、文件标识、用户标识、注解文本、注解日期时间和父项的注解
表2是具有删除的注解标识、文件标识、用户标识、注解文本、注解日期时间和注解删除日期时间的注解日志。
所以我只想让用户,版主或管理员删除的评论保存在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,但是我不知道如何从comment表中只获得带有该id的注解。

yvfmudvl

yvfmudvl1#

被删除的行的列在触发器中以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;

相关问题