事务中数据库查询的时间戳
Timestamp of DB queries within a transaction
我正在使用 DB::transaction
和 SoftDeletes
。
对于那些不熟悉 Laravel 的人来说,Laravel 的 SoftDelete
功能抽象了数据库中行的设置/查询。当一条记录被删除时,字段 deleted_at
被赋予一个时间戳,否则该字段是 null
。该字段然后用于查询以仅获取未删除的行。
目前我有一个每天运行的脚本,它删除所有超过 7 天的软删除条目。
这是我的 question/problem 所在的位置。如果我的 DB::transaction 跨越 10 秒,并将结束写入添加到 Table A 和 Table B 以便两个表中的条目具有不同的时间戳。
我可以想象这样一个场景,当清理脚本执行时它可以删除一半的条目记录。
那我的问题是
- DB::transaction 会为所有记录提供相同的时间戳吗?
- 如果不是,我该如何解决这个问题?
我能看到它工作的唯一方法是在受影响的表中包含一个事务编号,因为这似乎是关键任务,因为您的数据不会像您所说的那样被部分还原弄乱。 ]
需要调整清理例程。除非交易中的所有时间戳都超过 7 天,否则交易不能 soft deleted
和 随后被擦除。
我正在使用 DB::transaction
和 SoftDeletes
。
对于那些不熟悉 Laravel 的人来说,Laravel 的 SoftDelete
功能抽象了数据库中行的设置/查询。当一条记录被删除时,字段 deleted_at
被赋予一个时间戳,否则该字段是 null
。该字段然后用于查询以仅获取未删除的行。
目前我有一个每天运行的脚本,它删除所有超过 7 天的软删除条目。
我可以想象这样一个场景,当清理脚本执行时它可以删除一半的条目记录。
那我的问题是
- DB::transaction 会为所有记录提供相同的时间戳吗?
- 如果不是,我该如何解决这个问题?
我能看到它工作的唯一方法是在受影响的表中包含一个事务编号,因为这似乎是关键任务,因为您的数据不会像您所说的那样被部分还原弄乱。 ]
需要调整清理例程。除非交易中的所有时间戳都超过 7 天,否则交易不能 soft deleted
和 随后被擦除。