使用 PostgreSQL 中的视图将行插入表中

问题描述 投票:0回答:3

我创建了一个表名

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');
sql database postgresql sql-insert sql-view
3个回答
12
投票

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


4
投票

您正在寻找的是

updatable view
并且 postgresql 没有对它们的直接支持。

您可以使用 CREATE RULE 获得效果 - 该页面包含有关如何获得可更新视图效果的信息。


0
投票

您可以将行插入带有视图的表中。 *我的帖子详细解释了一个视图。

例如,您创建

person
表,如下所示:

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

然后,将 2 行插入到

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;

现在,您可以使用

person
my_v
表插入 2 行,如下所示。 *
id
last_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)
© www.soinside.com 2019 - 2024. All rights reserved.