在 Postgresql 9.4 中,我们将视图作为表 A 和 B 的联合进行处理,并且当我们“删除”底层表中的记录时(通过 aa 触发器上的看法)。
这里有更详细的信息。我们的观点看起来像,
A
--
id, name
1, afoo
2, abar
B
--
id, name
3, bfoo
4, bbar
Run Code Online (Sandbox Code Playgroud)
所以我们的视图 C 看起来像
C
--
1, afoo
2, abar
3, bfoo
4, bbar
Run Code Online (Sandbox Code Playgroud)
我们做了一个CREATE TRIGGER delete_trigger INSTEAD OF DELETE C FOR EACH ROW DO delete_trigger()
,它通过 id 删除行,这基本上就像
-- our function trigger():
$$
delete from A where id=old.id;
GET DIAGNOSTICS deletedA = ROW_COUNT;
delete from B where id=old.id;
GET DIAGNOSTICS deletedB = …
Run Code Online (Sandbox Code Playgroud)