Ι 有以下看法:
CREATE OR REPLACE VIEW public.my_view as
SELECT
col1,
col11
from
table_a JOIN table_b on table_a.id=table_b.a_id
join
(
select id,col56 from table_c where col56 > 3
) as filtered_c on table_a.id=filtered_c.a_id;
table_a 是:
id: SERIAL PK
col1: INTEGER
table_b 是:
id: SERIAL PK
col11: INTEGER
a_id FK table_a
table_c 是:
id: SERIAL PK
col56 INTEGER
a_id FK table_a
正如我在 postgresql wiki上看到的那样,我可以将值插入到与相应表对应的视图中。但就我而言,如果我插入:
INSERT INTO my_view VALUES (7,88);
将在哪个表中插入值?据我所知,视图是只读表。
包含连接的视图不会自动更新,也就是说,您不能简单地插入到这样的视图中。手册说(强调我的):
插入不满足这些要求的视图的唯一方法是
INSTEAD OF INSERT
在其上创建触发器,在这种情况下,哪些值进入哪些表由该触发器中实现的逻辑决定。