17.4. 数据改变的可视性

PostgreSQL 数据修改的可视性规则:在查询执行过程中, 由查询本身造成的数据修改(通过 SQL-函数, SPI-函数,触发器) 对查询扫描而言是不可见的.例如,在查询

   INSERT INTO a SELECT * FROM a

里,插入的记录对 SELECT 的扫描是不可见的.实际上, 这么做在数据库内部形成非递归的数据库表的复制品 (当然是要受到唯一索引规则的制约的喽)。

由查询 Q 造成的改变可以为查询 Q 以后运行的查询可见, 不管这些查询是在查询 Q 内部开始运行(在 Q 运行期间) 的还是Q运行完毕后开始运行的.