MySql在更新时,有条件地选择另一个表

时间:2013-06-04 05:03:14

标签: mysql sql

我有两张表posts_appposts_unapp。两者结构相同。

posts_app - 包含审核帖子

"id"    "title" "body"  "url"   "user"  "country"

posts_unapp - 新帖子最终在这里

"id"    "title" "body"  "url"   "user"  "country"   "Status"
1       Hello   Test    Foo     Bar     Tar         2

posts_unapp包含新帖子,主持人尚未批准。使用status = 2插入新帖子(这意味着他们尚未经过检查,既未获得批准也未被拒绝)。

主持人检查过帖子后,如果获得批准,则status列会更新为true,如果被拒绝,则会false。此时,是否可以仅在状态设置为true时自动将帖子复制到posts_app表?

实现这一目标的一种方法是在trigger on update上使用posts_unapp。但问题是,模式管理员可以将status设置为truefalse。两者都算作更新,两者都会触发触发器。设置status = flase无需复制数据,只有在status设置为true时才需要复制数据。

这样做的好方法是什么?我决定使用两个表来保持posts_app表的清洁。

1 个答案:

答案 0 :(得分:2)

DELIMITER $$
CREATE TRIGGER mytrig AFTER UPDATE ON posts_unapp
    FOR EACH ROW
    BEGIN
        IF NEW.Status = 'true' THEN  
            INSERT INTO posts_app VALUES(NEW.id, NEW.title,NEW.body,NEW.url,NEW.user,NEW.country);
        END IF;
    END;
$$
DELIMITER ;