【发布时间】:2014-06-30 22:55:48
【问题描述】:
所以,假设我有一个基于另一个表的内容构建的列。例如,属于课程3 的students 列表,无论出于何种原因,我都想将其缓存/预取到courses 表中:
students:
ID| name | courseID
1 | Jerry | 3
2 | Tom | 3
3 | Mike | 4
4 | Mary | 3
courses:
ID| name | studentsCache
1 | HTML Course | Jerry, Tom, Mary
$students_rs = $db->get("SELECT name FROM students WHERE courseID = 3");
$studentsList = implode(", ", $students_rs);
$db->exec("UPDATE courses SET studentsCache = $studentsList WHERE courseID = 3");
现在,如果并发会话在执行时创建了一个新学生怎么办?
SELECT name FROM students WHERE courseID = 3 LOCK IN SHARE MODE 是否也会锁定具有 courseID = 3 的“未来行”?
谢谢!
【问题讨论】:
标签: php mysql sql locking innodb