INSERT INTO a SELECT * FROM a里,插入的记录对 SELECT 的扫描是不可见的.实际上,这么做在数据库内部形成非递归的数据库表的复制(当然是要受到唯一索引规则的制约的)
但是请记住在 SPI 文挡里关于可视性的注释:
这些对触发器而言也是正确的,尽管被插入的记录 (tg_trigtuple)对 BEFORE 触发器是不可见的,这个刚被插入的记录却可以被一个 AFTER 触发器看到,并且对所有这个(触发器)以后的所有 BEFORE/AFTER 触发器均可见!由查询 Q 造成的改变可以为查询 Q 以后运行的查询可见,不管这些查询
是在查询 Q 内部开始运行(在 Q 运行期间)的还是Q运行完毕后开始运行的