在 PostgreSQL 中模拟计算列
与 MS SQL Server 不同,PostgreSQL 本身不支持计算列。 然而,有几种方法可以有效地复制此功能。
PostgreSQL 12 及更高版本
PostgreSQL 12 引入了 STORED 生成列,反映了 SQL Server 计算列的行为。 这些列物理存储在表中,可以在查询期间轻松访问。
<code class="language-sql">CREATE TABLE tbl ( int1 int, int2 int, product bigint GENERATED ALWAYS AS (int1 * int2) STORED );</code>
PostgreSQL 11 及更早版本
对于较旧的 PostgreSQL 版本,模拟虚拟生成列需要函数和属性表示法。
函数语法:
<code class="language-sql">CREATE FUNCTION col(tbl) RETURNS type AS 'expression';</code>
用法:
<code class="language-sql">SELECT tbl.col, ... FROM tbl;</code>
这种方法模仿虚拟生成的列;但是,它不包含在 SELECT *
中。
替代方法
SELECT *
检索原始列和计算列。重要注意事项:
SELECT *
中。IMMUTABLE
才能启用表达式索引。以上是如何在 PostgreSQL 中模拟计算列?的详细内容。更多信息请关注PHP中文网其他相关文章!