请问PostgreSQL中的计算/虚拟/派生列

PostgreSQL中的计算/虚拟/派生列

PostgreSQL是否支持计算/计算列,如MSSQLServer?我在文档中找不到任何东西,但是由于这个特性包含在许多其他DBMS中,我想我可能遗漏了一些东西。

例:http:/msdn.microsoft.com/en-us/Library/ms 191250.aspx


慕桂英546537
浏览 477回答 3
3回答

米脂

不超过Postgres 11生成列不支持-就像SQL标准中定义的那样,由一些RDBMS实现,包括DB2、MySQL和Oracle。也不像“计算列”SQL Server。STORED生成的列与Postgres 12..微不足道的例子:CREATE&nbsp;TABLE&nbsp;tbl&nbsp;( &nbsp;&nbsp;int1&nbsp;&nbsp;&nbsp;&nbsp;int,&nbsp;int2&nbsp;&nbsp;&nbsp;&nbsp;int,&nbsp;product&nbsp;bigint&nbsp;GENERATED&nbsp;ALWAYS&nbsp;AS&nbsp;(int1&nbsp;*&nbsp;int2)&nbsp;STORED);DB<>小提琴这里VIRTUAL生成的列可能与下一次迭代一起出现。有关:函数调用的属性表示法产生错误在那之前,你可以模仿VIRTUAL生成的列具有功能使用属性表示法&nbsp;(tbl.col)看起来和工作方式类似于虚拟生成的列。..由于历史原因,这在Postgres中存在一些语法上的奇怪之处,正好适合这种情况。这个相关的答案代码示例:将公共查询存储为列?表达式(看起来像列)不包括在SELECT * FROM tbl尽管如此。你总是必须明确地列出它。也可以通过匹配来支持表达指数-只要职能是IMMUTABLE..比如:CREATE&nbsp;FUNCTION&nbsp;col(tbl)&nbsp;...&nbsp;AS&nbsp;...&nbsp;&nbsp;--&nbsp;your&nbsp;computed&nbsp;expression&nbsp;hereCREATE&nbsp;INDEX&nbsp;ON&nbsp;tbl(col(tbl));备选方案或者,您可以使用VIEW,可选地与表达式索引耦合。然后SELECT *可以包括生成的列。“坚持”(STORED)计算列可以用触发器以一种功能相同的方式。物化观点是一个密切相关的概念,自Postgres 9.3以来实施.在早期版本中,可以手动管理MVS。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

SQL Server