我的任务是为来自不同表的一批条目实现“回滚”(不是通常的回滚)功能。例如:
def rollback(cursor, entries):
# entries is a dict of such form:
# {'table_name1': [id1, id2, ...], 'table_name2': [id1, id2, ...], ...}
我需要删除每个 table_name 中的条目。但是因为这些条目之间可能有关系所以有点复杂。我的想法分为几个步骤:
- 从所有可以为空的表中找出所有列。
- 更新所有条目将所有可以为空的列设置为空。在这一步之后应该没有循环依赖(如果没有,我认为它们不能插入到表中)
- 找出它们的依赖并进行拓扑排序。
- 一一删除。
我的问题是:
- 这个想法有意义吗?
- 有没有人做过类似的事情?如何?
- 如何查询第 3 步的元表?因为我对 postgresql 很陌生。
任何想法和建议将不胜感激。