[英]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.