2013-08-29 64 views
1

如果用户在数据库中有几百条记录,并且希望制作一份草稿,以便他们可以获取所有当前数据并进行一些更改,并将其另存为潜在草稿,并保留两份副本?我应该如何处理数据库中的数据副本?

我应该复制同一张表中的所有数据并将其标记为草稿吗?

或只重复更改?如果没有变化,然后使用“非草稿”数据?

用户应该能够进行更改,然后再回到现场并在那里进行更改,而不影响草稿?

+0

正在将一个选项复制到VMWare实例中? – Randy

+0

[将草稿保存为重复数据?](http:// stackoverflow。com/questions/18507845/saving-drafts-as-duplicated-data) –

回答

0

您可以使用BEGIN TRANS,COMMIT和ROLLBACK语句,也可以创建一个存储过程/一段代码,这意味着用户所做的任何修改都会被放入临时表中,直到它们准备投入生产。

如果您正在进行大量更改,最好使用临时表,因为使用COMMIT等可能导致锁定实时数据以用于其他用途。

这篇文章可以帮助如果上面没有任何意义您:http://www.sqlteam.com/article/temporary-tables

编辑 - 你可以创建一个“对飞”新表(即不是暂时的,而是完全成熟的SQL表),并将其命名为有意义的事。例如,用户intials,然后是原始表名,后跟一个时间戳。

然后,您可以在较长时间内以编程方式创建,修改和删除这些表格,并与实时表格进行比较。您需要跟踪正在创建多少个表以防万一您的数据库增长到庞大规模。

然后,唯一让人头疼的是将更改重新放入实时数据中。例如,如果有人将数据剪切成新表格,然后3周后决定在进行更改后将其发送到现场。在这种情况下,实时数据有可能会改变,并可能取代用户提交的更改。

虽然你可以通过一些创意编码来解决这个问题。有很多方法可以解决这个问题,所以如果你在下一步遇到困难,你可能想开始一个新的问题。但希望这至少能给你一些启发。

+0

我已经编辑了我的问题,使其更加清晰,草稿可能与原始版本并排放置,用户可以查看这两个副本的数据,这将是几百行,几百个用户想要做到这一点,这仍然是可行的临时表? – Alex

+0

可能会有临时表格持续相当长的时间。但是,如果您创建新表来保存信息,审计等也许会更容易。我正在编辑我的答案,以便更清楚地制作 – Yonabart

+0

为了审计/备份目的创建新表格并不是一个坏主意,只要确定是否有多个用户这样做,就如何完成这些工作来设置规则/指导原则(命名,他们停留多久,他们备份的频率等)。否则,最终会出现我现在所处的情况,用户在过去的X年内创建了超过300个“备份”或“复制”表,浪费空间,并且很难查看数据库并知道哪些表是合法的,哪些只是副本/备份。 – MattD

2

只是简单地在表中引入一个版本字段,将会受到影响。

内容管理系统(CMS)已经这样做了。例如,您可以创建博客帖子,并且版本为1.然后进行更改,然后获取版本2并继续。

你显然最终会存储相当多的数据。不过,一个很好的好处是您可以轻松编写查询来加载数据的版本(或快照)。

作为一种惯例,您可以始终将最高版本号设置为“活动”版本。

相关问题