我正在为政府竞赛创建一个问答网站,用户可以在其中提出问题并获得答案。
我需要允许用户像 StackOverflow 一样编辑彼此的问题和答案。问题是我需要存储版本历史记录,以便可以恢复不正确的编辑。
为此,我制作了一个新表并将原始帖子存储在其中,直到成功提交编辑。
如何保留修订历史记录以便显示以前的版本,并在必要时恢复编辑?
我正在为政府竞赛创建一个问答网站,用户可以在其中提出问题并获得答案。
我需要允许用户像 StackOverflow 一样编辑彼此的问题和答案。问题是我需要存储版本历史记录,以便可以恢复不正确的编辑。
为此,我制作了一个新表并将原始帖子存储在其中,直到成功提交编辑。
如何保留修订历史记录以便显示以前的版本,并在必要时恢复编辑?
您可以通过使用计数器字段定义您的问答表来保留修订历史记录。
Question Answer
-------- ------
Question ID Answer ID
Edit counter Edit counter
Question text Answer Text
问题 ID 和答案 ID 是自动递增的整数。
当问题或答案首次发布时,编辑计数器为零。第一次编辑后,您写入一个新行,编辑计数器设置为 1。下一次编辑是一个新行,编辑计数器设置为 2。依此类推。
这些表的主要索引是 ID 和编辑计数器。ID 递增,编辑计数器递减。这样,最近的编辑是检索到的第一行。编辑计数器告诉您已进行了多少编辑。
不要使用单独的表。如果不使用较新版本的唯一原因是未完成或无效的编辑会话,则依赖数据库中的普通事务。您只需在事务中替换数据库中的文本。只有当编辑被评估为“有效”时,才会提交该事务。否则你回滚事务。
但是,如果您需要所有以前的修订,这在大多数情况下是有意义的,那么仍然将内容保存在一个表中。只需为每个问题或答案的编辑添加一个又一个版本。如果未指定 id,则获取最新的。这样您仍然可以访问所有以前的修订。