【发布时间】:2020-06-09 13:45:23
【问题描述】:
我很可能过于复杂了。我对 MySQL 相当有信心,但以前从未使用过事务。我知道这个概念是 begin(),做一些事情,commit() 或 rollback() 在失败时,我很确定我可以轻松地构建它。
我想知道的是在事务期间我想更新一个表,然后在同一事务期间在另一个查询中使用该更新的值。这是一个大纲:
begin()
INSERT
SELECT FROM INSERT
UPDATE BASED ON SELECT
commit()
显然我已经精简了这里的代码,而这本身并没有任何意义。在我深入交易并发现它不起作用之前,我想知道这个概念是否有效。
我的实际交易将大 5 倍左右,其中部分依赖于上述未完成交易的其他部分。
我正在使用 Laravel,所以我的代码使用 DB::beginTransaction() DB::commit() 和 DB::rollback() 如果这对问题有任何影响。
【问题讨论】:
-
如果记忆有用,您确实会在同一事务中看到未提交的更改。自己检查和确认这一点应该不会太难
-
谢谢,它有助于了解新技术而不是走上死胡同。我还需要一段时间才能有适当的机会进行测试,所以我想我应该问一下。
-
如果你要走这条测试之路,你可能需要考虑隔离级别、驱动程序、特定数据库(本例中为 MySQL)。此外,您应该在测试中考虑
INSERT和DELETE。
标签: mysql laravel transactions