簡體   English   中英

更新具有特定條件的行時是否需要事務

[英]Do I need a transaction when updating a row with a specific condition

我正在做一個小項目,我想將表格中的某些項目標記為“已聲明”。

所以大多數物品都會有一個claim_id = NULL,當我想認領一個物品時,我會調用這個命令來更新下一個可用的物品:

update ci_items
set claim_id = ?
where claim_id IS NULL 
order by id 
LIMIT 1;

我認為這應該總是更新下一個可用的項目,或者如果所有項目都已被認領,則什么都不更新。 在 web 應用程序的上下文中,2 個 db 連接可以同時運行,是否有任何風險同時聲明一個項目兩次,一個 claim_id 覆蓋前一個?

我想我可以使用事務,但表結構目前是 MyISAM,我認為不支持事務

您向我們展示的內容效果很好。 單個 SQL 更新查詢在其持續時間內具有隱式事務(也稱為“自動提交”)。

Go 為它。

在設計和構建應用程序時,不要停止問自己這種原子性、一致性、隔離性、持久性 ( ACID ) 問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM