MySQL我需要锁定表吗?

时间:2013-11-27 19:04:45

标签: mysql locking

我需要为老师创建一个小小的预订系统。他打算在特定时间在线投放一些项目主题,学生可以分别选择一个主题。

让我们假设有一个包含两列的主题表#39;主题'和' name_of_student'。我将使用UPDATE将学生姓名分配给主题,但是希望避免两个人同时预订相同主题的情况。

我应该担心这个还是mysql会阻止它?或者我应该明确使用某种锁定机制,如果是,究竟是什么?

1 个答案:

答案 0 :(得分:1)

如果两名学生从不同的地方访问数据库,您不能只是UPDATE该表,因为您可能会覆盖第一人的预订。

在这种情况下,一个常见的策略是添加一个WHERE子句,以检查在您最终确定主题时该主题是否仍然可用,例如:而不是

UPDATE topics SET name_of_student = 'Bonzoq' WHERE topic_id = 1
你会写

UPDATE topics SET name_of_student = 'Bonzoq' WHERE topic_id = 1 
    AND name_of_student IS NULL

并检查受影响的记录数是否等于1.如果它等于0,则UPDATE失败,因为name_of_student不再是NULL