事务中数据库查询的时间戳

Timestamp of DB queries within a transaction

我正在使用 DB::transactionSoftDeletes

对于那些不熟悉 Laravel 的人来说,Laravel 的 SoftDelete 功能抽象了数据库中行的设置/查询。当一条记录被删除时,字段 deleted_at 被赋予一个时间戳,否则该字段是 null。该字段然后用于查询以仅获取未删除的行。

目前我有一个每天运行的脚本,它删除所有超过 7 天的软删除条目。

这是我的 question/problem 所在的位置。如果我的 DB::transaction 跨越 10 秒,并将结束写入添加到 Table ATable B 以便两个表中的条目具有不同的时间戳。

我可以想象这样一个场景,当清理脚本执行时它可以删除一半的条目记录。

那我的问题是

  1. DB::transaction 会为所有记录提供相同的时间戳吗?
  2. 如果不是,我该如何解决这个问题?

我能看到它工作的唯一方法是在受影响的表中包含一个事务编号,因为这似乎是关键任务,因为您的数据不会像您所说的那样被部分还原弄乱。 ]

需要调整清理例程。除非交易中的所有时间戳都超过 7 天,否则交易不能 soft deleted 随后被擦除。