相关疑难解决方法(0)

何时使用SELECT ... FOR UPDATE?

请帮我理解背后的用例SELECT ... FOR UPDATE.

问题1:以下是SELECT ... FOR UPDATE应该何时使用的一个很好的例子?

鉴于:

  • 客房[ID]
  • 标签[id,name]
  • room_tags [room_id,tag_id]
    • room_id和tag_id是外键

该应用程序希望列出所有房间及其标签,但需要区分没有标签的房间与已移除的房间.如果未使用SELECT ... FOR UPDATE,可能发生的情况是:

  • 原来:
    • 房间包含 [id = 1]
    • 标签包含 [id = 1, name = 'cats']
    • room_tags包含 [room_id = 1, tag_id = 1]
  • 线程1: SELECT id FROM rooms;
    • returns [id = 1]
  • 线程2: DELETE FROM room_tags WHERE room_id = 1;
  • 线程2: DELETE FROM rooms WHERE id = 1;
  • 线程2:[提交交易]
  • 线程1: SELECT tags.name FROM room_tags, tags WHERE room_tags.tag_id = 1 AND tags.id …

mysql sql sql-server transactions select-for-update

106
推荐指数
2
解决办法
8万
查看次数

标签 统计

mysql ×1

select-for-update ×1

sql ×1

sql-server ×1

transactions ×1