在并发环境下,仅仅依赖简单的读已提交隔离级别很难绝对保证多表之间的强一致性业务规则。
若对所有写入以及需要一致性数据视图的所有读取操作均采用可串行化(Serializable)事务隔离级别,则无需额外的显式锁开销即可自动保障一致性。应用程序框架应对可串行化冲突(错误码 40001)进行自动重试。
当无法使用可串行化事务时,为了确保数据行的当前有效性并防止并发修改,必须结合使用 SELECT FOR UPDATE、SELECT FOR SHARE 或显式 LOCK TABLE 语句来锁定目标行或表。