Mogdb2 or opengauss 2.0
anbob=# create table test5(id int,name varchar(100),owner varchar(100));
CREATE TABLE
anbob=# insert into test5 values(1,'anbob','anbob');
INSERT 0 1
anbob=# insert into test5 values(2,'anbob2','anbob');
INSERT 0 1
anbob=# insert into test5 values(3,'anbob3','weejar');
INSERT 0 1
anbob=# select * from test5;
id | name | owner
----+--------+--------
1 | anbob | anbob
2 | anbob2 | anbob
3 | anbob3 | weejar
(3 rows)
anbob=# create view v_test5 as select * from test5 where owner='anbob';
CREATE VIEW
anbob=# select * from v_test5;
id | name | owner
----+--------+-------
1 | anbob | anbob
2 | anbob2 | anbob
(2 rows)
anbob=# update v_test5 set name='a1' where id=1;
ERROR: cannot update view "v_test5"
HINT: You need an unconditional ON UPDATE DO INSTEAD rule or an INSTEAD OF UPDATE trigger.
anbob=# insert into v_test5 values(3,'anbob','anbob1');
ERROR: cannot insert into view "v_test5"
HINT: You need an unconditional ON INSERT DO INSTEAD rule or an INSTEAD OF INSERT trigger.
anbob=# insert into v_test5 values(3,'anbob','anbob');
ERROR: cannot insert into view "v_test5"
HINT: You need an unconditional ON INSERT DO INSTEAD rule or an INSTEAD OF INSERT trigger.
anbob=# select * from version();
version
---------------------------------------------------------------------------------------------------------------------------------------------------
--------------------
PostgreSQL 9.2.4 (openGauss 2.0.0 build 78689da9) compiled at 2021-03-31 21:04:03 commit 0 last mr on x86_64-unknown-linux-gnu, compiled by g++
(GCC) 7.3.0, 64-bit
(1 row)
PostgreSQL 9.2 view 默认是不支持更新,好像是从9.3版本开始支持的, Opengauss是基于9.2 目前该功能未引入。至少目前postgresql 13是可以的。
postgresql 13
weejar=# create table test5(id int,name varchar(100),owner varchar(100));
CREATE TABLE
weejar=#
weejar=# insert into test5 values(1,'anbob','anbob');
INSERT 0 1
weejar=#
weejar=# insert into test5 values(2,'anbob2','anbob');
INSERT 0 1
weejar=#
weejar=# insert into test5 values(3,'anbob3','weejar');
INSERT 0 1
weejar=#
weejar=# create view v_test5 as select * from test5 where owner='anbob';
CREATE VIEW
weejar=# select * from v_test5;
id | name | owner
----+--------+-------
1 | anbob | anbob
2 | anbob2 | anbob
(2 行记录)
weejar=# update v_test5 set name='a1' where id=1;
UPDATE 1
weejar=# select * from v_test5;
id | name | owner
----+--------+-------
2 | anbob2 | anbob
1 | a1 | anbob
(2 行记录)
weejar=# insert into v_test5 values(3,'anbob','anbob1');
INSERT 0 1
weejar=# select * from v_test5;
id | name | owner
----+--------+-------
2 | anbob2 | anbob
1 | a1 | anbob
(2 行记录)
weejar=# select * from test5;
id | name | owner
----+--------+--------
2 | anbob2 | anbob
3 | anbob3 | weejar
1 | a1 | anbob
3 | anbob | anbob1
(4 行记录)
weejar=# insert into v_test5 values(3,'anbob','anbob');
INSERT 0 1
weejar=# select * from test5;
id | name | owner
----+--------+--------
2 | anbob2 | anbob
3 | anbob3 | weejar
1 | a1 | anbob
3 | anbob | anbob1
3 | anbob | anbob
(5 行记录)
weejar=# select * from v_test5;
id | name | owner
----+--------+-------
2 | anbob2 | anbob
1 | a1 | anbob
3 | anbob | anbob
(3 行记录)
weejar=# select version();
version
------------------------------------------------------------
PostgreSQL 13.1, compiled by Visual C++ build 1914, 64-bit
(1 行记录)
– enjoy –