进行大量表格更改,这些更改似乎同时发生

时间:2016-02-04 15:32:40

标签: c# sql winforms oracle11g

每隔这么多小时我需要删除表中的几千条记录,然后立即插入几千条记录来替换已删除的记录。有些应用程序偶尔会读取此数据。我不希望这些应用程序进行表格阅读并获得一些旧记录以及一些新记录,并且我不希望在插入所有记录之前阅读这些应用程序。

我想从我的C#代码中删除和插入。我会把它们组合成一个单一的" Begin"和"结束"阻止并立即将其全部发送给Oracle ...除了它可能是100k以上的大小。这似乎太大了。因此,似乎在for next循环中运行多个语句是我的最佳选择。但似乎这会导致我的表在循环运行时有部分旧数据和部分新数据。这就是我需要避免的。

如何执行删除和后续插入,使它们看起来与读取表格的应用程序同时发生,从而避免上述不良问题?

1 个答案:

答案 0 :(得分:3)

执行快速切换的一种方法是将数据插入临时表,启动事务并从该表执行INSERTMERGE到主表。

这样,时间敏感操作由RDBMS引擎本身完成,非时间敏感的数据插入临时表不会影响切换时间。