我有 2 个这样的版本表:
项目:
- ID
- rev_id
- 姓名
- 已删除
分项:
- ID
- rev_id
- 姓名
- parent_id
- 已删除
我从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,我想为子项目表中 parent_id == items.id 的所有子项目添加删除 = 1 的新记录。有什么简单的方法可以做到这一点,是否可以通过一个查询?如果我什至还有另一个 subsubitems 表,我怎么能在那里实现呢?