gpt4 book ai didi

mysql - 我在这里需要交易吗?

转载 作者:可可西里 更新时间:2023-11-01 07:37:29 26 4
gpt4 key购买 nike

我有一个表正在收集用户输入的数据。

我想执行如下SQL语句:

SELECT 语句 1

SELECT 语句 2

更新我在 2 个选择语句中读出的表行

我想防止其他用户在任何语句之间输入新数据的可能性。

我已经阅读了 MySQL 手册,似乎我可以先锁定表,但我对事务更熟悉,我想知道围绕 3 个语句包装一个事务是否可以实现我想要的。我发现很难通过阅读手册来确定这是否有效(或者可能只有我......)

最佳答案

这里有两个可能的问题范围;事务(如果您使用的是支持事务的引擎,例如 InnoDB)将解决其中一个问题。

事务使您的所有查询都在事务开始时对数据库状态的快照进行操作,并且在事务完成时应用所有修改或不应用任何修改。这有效地解决了查询的交错和竞争条件。

但是,您声明要阻止用户在任何语句之间输入新数据。如果在这种情况下您希望确保提交请求的用户是从当前数据开始的,您将需要实现自己的锁定机制,或者至少需要一种方法来捕获请求之间交错导致问题的情况。

基本上,事务只会帮助在并发请求中运行的查询。如果这种情况会成为问题:

  1. User1 请求数据
  2. User2 请求数据
  3. User1 提交修改
  4. User2 提交修改

当 User2 能够在不知道 User1 所做的更改的情况下提交他们的更改时,您需要自己的锁定系统;交易不会有帮助。这来自 Web 开发背景,其中每个步骤都是单独事务中的单独 Web 请求。

关于mysql - 我在这里需要交易吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15466703/

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