在一个交易中做出的更改是否"互相看"?

sha*_*oth 5 sql database sql-server transactions

假设我在只有一列的表中执行以下一组SQL查询(伪代码)CITY:

BEGIN TRANSACTION;
INSERT INTO MyTable VALUES( 'COOLCITY' );
SELECT * FROM MyTable WHERE ALL;
COMMIT TRANSACTION;
Run Code Online (Sandbox Code Playgroud)

SELECT保证返回COOLCITY

Mar*_*ith 6

是.

INSERT操作将X至少锁定新添加的行.这将在事务结束之前释放,从而防止并发事务删除或更新此行.

事务不会被自己的锁阻塞,因此SELECT会返回COOLCITY.