我有两个版本化的表格如下:
产品:
子项:
我从http://kristiannielsen.livejournal.com/6745.html了解到,从我的表中获取所有最新版本的对象非常容易和快速:
SELECT a.name, a.id, a.rev_id, a.deleted FROM Items a
INNER JOIN (SELECT id, MAX(rev_id) AS rev_id FROM Items GROUP BY id) b
ON (a.id= b.id AND a.rev_id b.rev_id)
但是当用户删除记录时,如果我可以插入已删除的新记录为1作为新记录,那将会很酷。我在这里找到:https://stackoverflow.com/a/4039781/672989我可以插入这样的东西:
INSERT INTO table (id, rev_id, name, deleted)
SELECT id, rev_id, name, 1 FROM Items WHERE id = 1 ORDER BY rev_id DESC LIMIT 1
但是如果Items表中的一个项被删除= 1,我想为subitems表中parent_id == items.id的所有子项添加deleted = 1的新记录。什么是简单的方法来实现这一点,是否可以使用一个查询?如果我甚至有另一个子子目录表怎么办呢?
答案 0 :(得分:0)
您需要创建一个“on insert”触发器,如果父标记已被标记,则会覆盖deleted
的值:
DELIMITER ;;
CREATE TRIGGER foo BEFORE INSERT ON Items FOR EACH ROW
IF (SELECT deleted FROM Items WHERE id = NEW.parent_id) THEN
SET NEW.deleted := 1;
END IF;;
DELIMITER ;