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

时间:2011-03-24 08:17:37

标签: sql sql-server database transactions

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

BEGIN TRANSACTION;
INSERT INTO MyTable VALUES( 'COOLCITY' );
SELECT * FROM MyTable WHERE ALL;
COMMIT TRANSACTION;

SELECT保证返回COOLCITY

1 个答案:

答案 0 :(得分:6)

是。

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

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