首页 >数据库 >mysql教程 >PostgreSQL 是否像 SQL Server 一样支持计算列?

PostgreSQL 是否像 SQL Server 一样支持计算列?

Barbara Streisand
Barbara Streisand原创
2025-01-21 17:27:09289浏览

Does PostgreSQL Support Computed Columns Like SQL Server?

PostgreSQL 中的计算列

问:PostgreSQL 是否支持与 MS SQL Server 中类似的计算列?

答:是的,PostgreSQL 12 及更高版本引入了 STORED 生成列,它类似于 SQL Server 中的计算列。

PostgreSQL 12 或更高版本

  • 支持 STORED 生成列,并遵循 SQL 标准。

  • 示例:

    <code class="language-sql">  CREATE TABLE tbl (
          int1    int,
          int2    int,
          product bigint GENERATED ALWAYS AS (int1 * int2) STORED
      );</code>

PostgreSQL 11 或更低版本

  • 不直接支持 生成列

  • 解决方法是使用带有属性表示法的函数,这模拟了虚拟生成列:

    <code class="language-sql">  CREATE FUNCTION col(tbl) ... AS ...  -- 计算表达式
      CREATE INDEX ON tbl(col(tbl));</code>

替代方案

  • 视图 可用于实现计算列,但不能通过 SELECT * 访问。
  • 触发器 可用于实现持久化 (STORED) 计算列。
  • 物化视图 为持久化计算列提供了更高效的选项。

以上是PostgreSQL 是否像 SQL Server 一样支持计算列?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn