django mysql 行锁

zs123123 发布于 2014/09/03 18:15
阅读 1K+
收藏 1

我用的是django 1.6 使用select_for_update 可以行级锁

但是我需要的是锁定另外一个修改了就出错,为什么是等待解锁后在修改,没什么用嘛,最后还是改了

@transaction.atomic()
def detail(request, pk):
    p1 = Project.objects.select_for_update().get(id=pk)
    import random
    p1.name = random.random()
    p1.save()
    time.sleep(10)
2个请求都访问这个

还是后访问的修改了数据,

我想前面锁定了后面就修改就直接出错,应该怎么办

加载中
0
DavidWTF
DavidWTF
事务机制只保证一致性吧。你的需求可以在你的数据库中设个标志字段。修改之前先查一下。这样行吗?
0
hylent
hylent

mysql innodb 不支持 select ... for update nowait 

只能手动设置 session级的 innodb_lock_wait_timeout  配置项啊

hulingjie1991
hulingjie1991
innodb的 用BEGIN就可以了啊,
返回顶部
顶部