假设我在一个只有一列CITY
的表中执行以下一组SQL查询(伪代码):
BEGIN TRANSACTION;
INSERT INTO MyTable VALUES( 'COOLCITY' );
SELECT * FROM MyTable WHERE ALL;
COMMIT TRANSACTION;
SELECT
保证返回COOLCITY
?
答案 0 :(得分:6)
是。
INSERT
操作至少会在新添加的行中锁定X
。这将在事务结束之前释放,从而防止并发事务删除或更新此行。
事务不会被自己的锁阻塞,因此SELECT
将返回COOLCITY。