首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从oracle到postgres的MIgrating虚拟列

从oracle到postgres的MIgrating虚拟列
EN

Stack Overflow用户
提问于 2016-10-03 11:33:27
回答 1查看 310关注 0票数 0

当从Oracle 11迁移到Postgres 9.5时,人们有哪些选项来处理虚拟列-而不必更改应用程序中与数据库相关的代码(这意味着函数和视图不在考虑范围之内,而触发器在处理大型数据集时代价太高)?

存在一个类似的问题:Computed / calculated columns in PostgreSQL,但解决方案对迁移场景没有帮助。

EN

回答 1

Stack Overflow用户

发布于 2016-10-03 17:58:50

如果使用BEFORE INSERT触发器,则可以在实际写入之前修改插入的值。这应该不会很贵。如果需要尖端性能,则用C编写触发函数。

但我认为视图是最好的解决方案。您可以使用可更新视图,这样您就不必更改应用程序代码:

代码语言:javascript
复制
CREATE TABLE data(
   id integer PRIMARY KEY,
   factor1 integer NOT NULL,
   factor2 integer NOT NULL
);

CREATE VIEW interface AS
   SELECT id, factor1, factor2,
          factor1 * factor2 AS product
   FROM data;

test=> INSERT INTO interface VALUES (1, 6, 7), (2, 3, 14);
INSERT 0 2
test=> UPDATE interface SET factor1 = 7 WHERE id = 1;
UPDATE 1
test=> DELETE FROM interface WHERE id = 1;
DELETE 1
test=> SELECT * FROM interface;
┌────┬─────────┬─────────┬─────────┐
│ id │ factor1 │ factor2 │ product │
├────┼─────────┼─────────┼─────────┤
│  2 │       3 │      14 │      42 │
└────┴─────────┴─────────┴─────────┘
(1 row)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39824244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档