我正在Postgresql中创建一个视图,在这个视图中,我将多个表连接到一个表中。我想在最后添加一个带有时间戳的新变量。我用这样的表做到了这一点:
CREATE TABLE table
AS with table_temp AS (
--joining tables
);
ALTER TABLE table
ADD COLUMN DateOfChange Timestamp;
UPDATE table
SET DateOfChange = LOCALTIMESTAMP(0) at TIME ZONE 'Etc/GMT+2';我需要将这些句子组合在一个句子中(由于视图)。我试着先创建一个表,但我想我做错了。我这样做了:
CREATE TABLE table
AS UPDATE(
ALTER TABLE(
with table_temp AS (
--joining tables
)
ADD COLUMN DateOfChange Timestamp)
SET DateOfChange = LOCALTIMESTAMP(0) at TIME ZONE 'Etc/GMT+2';但这是行不通的。怎样做才是正确的呢?这样的观点是可能的吗?
发布于 2021-06-03 16:50:09
SET TIME ZONE 'Etc/GMT+2';
CREATE VIEW <view_name> AS
SELECT <your_fields>,DateOfChange Timestamp TIME ZONE DEFAULT LOCALTIMESTAMP(0)
FROM <your_tables_joined_as_needed>;发布于 2021-06-03 16:59:47
为此,您可以使用materialized view:
CREATE MATERIALIZED VIEW my_view AS
SELECT <table columns>, LOCALTIMESTAMP(0) AS date_of_change FROM table1
UNION (
SELECT <table columns>, LOCALTIMESTAMP(0) AS date_of_change FROM table2
);实体化视图的工作方式类似于表(存储)和视图(获取的值)的组合。一旦您创建了这个视图,您就可以通过
REFRESH MATERIALIZED VIEW my_view;https://stackoverflow.com/questions/67818015
复制相似问题