避免MySql中错误写入的可能方法
假设我们有一笔交易- 交易T1避免MySql中错误写入的可能方法,mysql,transactions,isolation-level,Mysql,Transactions,Isolation Level,假设我们有一笔交易- 交易T1 S1=> id1 = select id, colA, colB, colC from table A where colA = 'A1'; S2=> update table A set colB = 'B1' where id = 'id1' 上面,我想将colB更改为B1,前提是colA值为A1 交易T2 S3=> update table A set colA = 'A2' where colA = 'A1'; 上述事
S1=> id1 = select id, colA, colB, colC from table A where colA = 'A1';
S2=> update table A set colB = 'B1' where id = 'id1'
上面,我想将colB
更改为B1
,前提是colA
值为A1
交易T2
S3=> update table A set colA = 'A2' where colA = 'A1';
上述事务将colA
值设置为A2
因此,在上面的场景中,如果发生了来自T1
的S1
,然后发生了来自T2
的S3
,然后来自T1
的S2
,那么它将是错误的,因为在执行S3之后,colA的值是A2
,所以我不希望S2成功
我怎样才能避免这种情况
可能的解决方案-
更新表A集合colB='B1',其中id='id1'和colA='A1'
SERIALIZABLE
update table A
set colB = 'B1'
where id = 'id1'
AND colA = 'A1'
是的,我想问,我是否可以将事务隔离级别设置为
可序列化
,并实现它?