|
20.3. 数据改变的可视性PostgreSQL 数据修改的可视性规则:在查询执行过程中, 由查询本身造成的数据修改 (通过 SQL-函数,SPI-函数,触发器)对查询扫描而言是不可见的. 例如,在查询 INSERT INTO a SELECT * FROM a; 里,插入的元组对 SELECT 的扫描是不可见的.实际上, 这么做在数据库内部形成非递归的数据库表的复制 (当然是要受到唯一索引规则的制约的).
这些对触发器而言也是正确的,尽管被插入的元组 (tg_trigtuple)对 BEFORE 触发器是不可见的, 这个刚被插入的元组却可以被一个 AFTER 触发器看到, 并且对所有这个(触发器)以后的所有 BEFORE/AFTER 触发器均可见! |