【问题标题】:Delete + insert data from/to database从/向数据库删除+插入数据
【发布时间】:2012-11-29 11:57:48
【问题描述】:

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

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

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

解决/处理这种状态的最佳实践/模式是什么?

【问题讨论】:

  • 如果您在单个事务中执行插入/删除,其他进程在您提交之前不会看到更改。

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


【解决方案1】:

我想到了三个选项:

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

【讨论】:

    猜你喜欢
    • 2019-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-15
    • 1970-01-01
    • 1970-01-01
    • 2011-11-29
    • 2012-10-18
    相关资源
    最近更新 更多