在事务数据库中撤消
我不知道如何使用事务数据库实现用户友好界面的撤销属性。
一方面,建议用户具有多级(无限)撤销可能性,如答案中所述。可能有助于此问题的模式是Memento或Command。
但是,使用包含触发器,不断增长的序列号和不可逆转的过程的复杂数据库,很难想象撤消操作如何在不同于事务边界的点处起作用。
换句话说,撤消到最后一次提交的事务只是回滚时,但是如何回到不同的时刻?
更新(基于到目前为止的答案):我不一定希望撤消在修改已经提交时有效,我将专注于具有开放事务的正在运行的应用程序。每当用户点击保存时,它意味着提交,但在保存之前 - 在同一事务期间 - 撤消应该有效。我知道使用数据库作为持久层只是一个实现细节,用户不应该为此烦恼。但是,如果我们认为“在数据库和GUI中撤消的想法是根本不同的东西”,并且我们不对数据库使用撤销,那么无限撤消只是一个流行语。
我知道“回滚是......不是用户撤消”。
那么如何在同一个事务中给出“由于任何更改而产生的级联效应”,实现客户端级撤销?
没有找到相关结果
已邀请:
5 个回复
贸会
屉杆绊
在上面的例子中,只剩下第一个插入,另外两个插入将被撤消。 我认为在提交后尝试撤销通常是不切实际的,原因是你给了*和其他人。如果它在某些情况下是必不可少的,那么你将需要构建大量代码来实现它,并考虑触发器等的影响。 虽然我看到不断增加的序列没有任何问题?
骚瓤
递劝臼类洪
锑寝粒