MySQL 中的可序列化和基于行的锁定

Serializable and Row-based locking in MySQL

我正在尝试将数据库从 MsSQL 转换为 MySQL。

对于MsSQL中存在的Serializable隔离级别,在MySQL中具体应该如何配置事务呢?因为 MsSQL 关键字不起作用。

示例;

设置事务隔离级别可序列化

开始交易;
更新 table_name SET column1 = value1, column2 = value2, ... WHERE条件
提交交易;

除此之外;在事务开始和提交之间对 table 的一行进行事务时是否有基于行的锁定功能?

示例;

更新table_name SET column1 = value1, column2 = value2, ... WHERE条件

// 仅针对条件的基于行的锁定

如果默认是禁用的,我应该怎么做才能启用它?

谢谢。

您是否在设置隔离级别后启动事务?它将仅为下一个交易设置交易级别。您可以通过“SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;”为所有会话设置它。如果您想在创建与数据库服务器的连接期间执行此操作,您可以在连接字符串的末尾添加“?sessionVariables=transaction_isolation='SERIALIZABLE'”。或者您可以在连接后立即执行一次“SET SESSION TRA ... SERIALIZABLE”。