如何创建具有时间戳值的记录的副本

时间:2016-05-13 16:46:45

标签: sql-server sql-server-2008-r2 timestamp

我在SQL Server 2008 R2中工作,并且有一个生产表,我需要在另一个位置准确复制才能使用。我将首先运行一个工作来移动所有东西(一旦关闭),然后运行每日工作以每天更新更新/插入。

每日作业将查看生产表并查找需要插入的任何新值(基于创建日期),还可以查找需要更新的任何现有值(基于修改日期)。任何新值都是插入,任何修改的值都是更新。

作业从生产表中提取这些行,并将它们应用于位于其他位置的副本表。我遇到了时间戳列的问题。生产表有一个时间戳列,我不知道在更新复制表(也创建为时间戳列)时应该如何处理。

如果我设置了production.timestamp_col = copytable.timestamp_col(无法更新时间戳列),则会出错。

我应该将其遗漏(在这种情况下,我没有表格的精确副本),转换副本表格中的列和&从生产表中选择的值到其他东西(不确定是什么),把我自己的值放入(再次,没有表的精确副本)或者每次都删除/截断并重新创建(由于数据而导致效率低下)体积)?

在这样的情况下,最好的方法是什么?

由于

2 个答案:

答案 0 :(得分:2)

在SQL中,时间戳列是系统生成的,您无法更新它或在插入时设置它。 SQL为您完成所有这些。

https://technet.microsoft.com/en-us/library/ms182776(v=sql.110).aspx

您可以通过复制/镜像来获取100%精确的副本,但根据您的需要,它可能不值得。

答案 1 :(得分:1)

您可以将目标时间戳列转换为varbinary(8),然后插入值。这将帮助您创建精确的副本,但它会破坏时间戳功能。如果您只需要一份副本,请执行此操作。 timestamp列的实际用途是通过版本控制跟踪对行的更改。