讨论一个sql中的问题,事务过程中,如何避免第二个线程读到第一个线程的未执行完的数据?

begin;

select * from user where name = ""; // id =1

UPDATE user SET name  = "Abc" where id = 1;

commit;

如果有2条线程一起执行,第二个线程也会读到id=1(实际上这个id=1已经被线程1给更新了。如何避免这种情况呢?

除了 UPDATE user SET name = “Abc” where name= “”

使用 读已提交(Read Committed),但可能出现“不可重复读”和“幻读”。

建议看一下数据库的事务隔离级别。

SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
4 个赞