【发布时间】:2015-01-08 02:23:37
【问题描述】:
数据库架构:booking_number(primary,not auto inc), fee (float),...等
“booking_number”将在每次插入时递增。 这不是由数据库本身自动递增的。 “booking_number”必须在代码中增加,并且由于其他原因不能自动完成。
如果我想插入一行,我会读最后一个 “booking_number”,增加它并将新行写回数据库。 同时另一个用户也在插入一行,他读取了 “booking_number”的最后一个条目,与我阅读的相同,因为我没有 还写了新的一行。他还将递增到相同的值,并且 写回来。这将导致冲突。
这样,如果我可以锁定数据库表,其他人就无法读取/写入 直到有人完成对新行的读写。
我可以在 cakephp 中锁定数据库表吗? 我在哪里可以获得参考书或代码??
任何帮助表示赞赏!
【问题讨论】:
-
您可能不需要为此锁定表。只需按照您的描述运行您的代码。当第二个进程尝试添加具有相同值的新行时,可以捕获重复键错误。当捕获时,重新执行。
-
yap,我也这么认为。可以通过创建view/Errors/pdo_error.ctp来自定义错误信息。并显示消息以重试客户。对吗? @AgRizzo
标签: mysql database cakephp locking