有一个学生,其type属性为4,属性最小值type可以为1。
在 postgres 中
在会话 1 中,我独占锁定并更新学生表中的一行:
BEGIN;
LOCK TABLE students IN ROW EXCLUSIVE MODE;
SELECT * FROM students WHERE id = 122 FOR UPDATE;
UPDATE students SET type = 1 WHERE id = 122;
END;
Run Code Online (Sandbox Code Playgroud)
在第 2 节中,我同时运行:
UPDATE students SET type = type - 1 WHERE id = 122;
Run Code Online (Sandbox Code Playgroud)
我得到的结果是一个例外,即学生在会话 2 中type不能低于1 ,因为我已经将同一个学生的type值设置为1,并且由于会话处于该学生的独占锁定状态,因此会话 2 必须等待。
在 Flask-SQLAlchemy 中
我尝试使用用户重新创建相同的结果,type默认情况下属性设置为 4。
在第 1 节中:
user = …Run Code Online (Sandbox Code Playgroud)