删除+从/向数据库插入数据

时间:2012-12-11 21:13:27

标签: sql database sql-insert delete-row corresponding-records

我有一些包含一些聚合数据的数据库表。他们的记录(几千个/表)由外部.NET应用程序定期重新计算,因此应删除旧数据并定期插入新数据。在这种情况下,更新不是一种选择。

在删除/插入之间有一个中间时间,当记录状态不一致时(旧的删除,新的不在表中),因此在该状态下进行选择查询会导致错误的结果。

我使用亚音速simplerepository来处理数据库功能。

解决/处理此状态的最佳做法/模式是什么?

1 个答案:

答案 0 :(得分:3)

我想到了三个选择:

  1. 创建一个锁定读取的事务,直到完成为止。这仅在流程相对较快时才有效。如果你一次交易/锁定一个表,那么几千条记录应该不会太糟糕 - 如果你锁定整个过程,这可能会很昂贵!但如果数据是相关的,那就是你必须要做的事情
  2. 写入表的临时版本,然后删除旧表并重命名临时表。
  3. 与上面相同,除了从临时表(不一定是SQL临时表,但辅助保持表就足够了)批量复制到正确的表中,首先从主表中删除。你仍然想为此使用交易。