我会通过添加一个复合主键(您肯定已经这样做了)来确保表的安全:
ALTER TABLE table ADD CONSTRAINT pk_table PRIMARY KEY (timestamp, person, type);
此外,我还通过在其中添加主键来确保物化视图的安全。根据mv ist的构建方式,您需要更改提供给它的查询,以便不会出现重复。例如,见
here
.
如果两者都是安全的,那么插入很简单:
INSERT INTO table (timestamp, person, type, further_col1, col2, ...)
SELECT timestamp, name, type, further_col1, col2, ....
FROM edb.mv_1 m
WHERE NOT EXISTS (
SELECT *
FROM table t2
WHERE t2.timestamp = m.timestamp
AND t2.person = m.name
AND t2.type = m.type
);
如果只有三列,可以将插入缩短为:
INSERT INTO table (timestamp, person, type)
SELECT timestamp, name , type FROM edb.mv_1
MINUS
SELECT timestamp, person, type FROM table;
请确保表和mv中的E列不为空。请不要给表格命名
table
和专栏
timestamp
或
type
.我相信这些只是例子。