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

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

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

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

我使用 subsonic simplerepository 来处理数据库功能。

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

最佳答案

我想到了三个选项:

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

关于sql - 从/向数据库删除+插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13828600/

相关文章:

MySQL RAND() 奇怪的行为

SQL - 使用 Postgres 中的附加查询扩展 INSERT 查询的结果

android - SQLite 数据库被锁定?

mysql - 更新或插入,多行

mysql - SQL 如果条件为真,只计算一次

mysql - SQL - 将 select * 查询与 select 1 组合

mysql - 保存 SQL 查询供以后使用,或将此数据作为列上传到我的数据库中

java - 有没有办法让 mysql 返回的行可以被 5 整除

json - ETL - 自动将数据从一个数据库传输到另一个数据库

sql - 相似列出现次数