在PostgreSQL中使用视图将行插入到表中

rxztt3cl  于 2024-01-07  发布在  PostgreSQL
关注(0)|答案(3)|浏览(140)

我创建了一个名为viewex的表:

CREATE TABLE viewex (
  sno INTEGER,
  name VARCHAR(30),
  email VARCHAR(30),
  address VARCHAR(50),
  contact VARCHAR(30)
);

字符串
已将数据插入表中。
现在我只想插入3列数据(姓名,地址,联系人):

INSERT INTO viewex (name, address, contact)
VALUES ('celcabs', 'good', 'bad');


现在的问题是....是否可以为查询创建视图

INSERT INTO viewex (name, address, contact)
VALUES ('celcabs', 'good', 'bad');

mznpcxlj

mznpcxlj1#

从PostgreSQL 9.3开始,你可以插入和更新“简单视图”:http://www.postgresql.org/docs/9.3/static/sql-createview.html

xggvc2p6

xggvc2p62#

你要找的是updatable view,而postgresql并不直接支持它们。
你可以使用CREATE RULE来获得这个效果-这个页面有关于如何获得一个可更新视图的效果的信息。

xkftehaa

xkftehaa3#

您可以将行插入到带有视图的表中。* My post详细解释了视图。
例如,创建person表,如下所示:

CREATE TABLE person (
  id INTEGER,
  first_name VARCHAR(20),
  last_name VARCHAR(20),
  age INTEGER
);

字符串
然后,将两行插入person表,如下所示:

INSERT INTO person (id, first_name, last_name, age) 
VALUES (1, 'John', 'Smith', 27), (2, 'David', 'Miller', 32);


然后,调用person得到如下结果:

postgres=# SELECT * FROM person;
 id | first_name | last_name | age
----+------------+-----------+-----
  1 | John       | Smith     |  27
  2 | David      | Miller    |  32
(2 rows)


然后,创建my_v视图,如下所示:

CREATE VIEW my_v AS
  SELECT first_name, age FROM person;


现在,您可以使用my_vperson表插入2行,如下所示。* idlast_name不可用:

INSERT INTO my_v (first_name, age) 
VALUES ('Robert', 18), ('Mark', 40);


然后,将2行插入person表,如下所示:

postgres=# SELECT * FROM person;
 id | first_name | last_name | age
----+------------+-----------+-----
  1 | John       | Smith     |  27
  2 | David      | Miller    |  32
    | Robert     |           |  18
    | Mark       |           |  40
(4 rows)

相关问题