請考慮存在充滿記錄的存儲表。將有許多併發請求從存儲表中選擇並擁有一些記錄。在沒有碰撞的情況下選擇並更新MySQL中的幾行
我不確定,也不知道如何使用Transcations來結合select和update來完成我沒有任何聯盟的情況。
例如,這是我的表:
+----+------+----------+
| id | name | is_taken |
+----+------+----------+
| 1 | a | 1 |
| 2 | b | 0 |
| 3 | c | 0 |
| 4 | aa | 1 |
| 5 | bb | 0 |
| 6 | dd | 0 |
| 7 | e | 0 |
| 8 | ff | 0 |
+----+------+----------+
-
-- first select them
SELECT * FROM `STASH` WHERE `is_taken` = 0 LIMIT 2
-- then update and take them to stop others to taking them
UPDATE `STASH` SET `is_taken` = 1 WHERE `is_taken` = 0