gpt4 book ai didi

使用插入忽略(或类似)和唯一 ID 进行 MySQL 事务处理

转载 作者:行者123 更新时间:2023-11-29 15:00:53 26 4
gpt4 key购买 nike

我正在使用 MySQL + PHP。我有一些代码可以根据到期时间从自动付款表生成付款(以便您可以计划 future 的付款...等)。自动脚本在站点上的事件之后运行,有时会同时运行两次。为了避免这种情况,我们为付款生成一个 uuid,其中特定自动付款只能有第 n 次付款。我们还使用交易来封装整个支付生成过程。

作为其中的一部分,如果存在重复的 uuid,我们需要整个事务失败,但获得实际的数据库错误将向用户显示错误。我可以在付款插入SQL中使用插入忽略吗?警告会终止交易吗?如果没有,当有重复的 uuid 时如何终止事务?

澄清一下:如果 INSERT 失败,我怎样才能让它不抛出程序停止错误,而是终止/回滚事务?

请注意,插入将在提交时失败,而不是在 php 中初始执行时失败。

非常感谢!

最佳答案

也许还有另一种方法 - 确保相同的 UUID 不会被读取两次,而不是依赖于查询失败。

我猜您在处理和插入之前从另一个表获取了 UUID。您可以使用事务,然后在读取记录时SELECT ... FOR UPDATE。这样你读取的记录就被锁定了。当您获取所有数据时,将 status 列更新为“已处理”并COMMIT 事务。最后,确保进程不会读取状态为“已处理”的记录。

希望这有帮助...

关于使用插入忽略(或类似)和唯一 ID 进行 MySQL 事务处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3134277/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com