怎么使用PostgreSQL 12中的generated columns
发表于:2025-11-10 作者:千家信息网编辑
千家信息网最后更新 2025年11月10日,这篇文章主要介绍"怎么使用PostgreSQL 12中的generated columns",在日常操作中,相信很多人在怎么使用PostgreSQL 12中的generated columns问题上存
千家信息网最后更新 2025年11月10日怎么使用PostgreSQL 12中的generated columns
这篇文章主要介绍"怎么使用PostgreSQL 12中的generated columns",在日常操作中,相信很多人在怎么使用PostgreSQL 12中的generated columns问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎么使用PostgreSQL 12中的generated columns"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
在其他数据库中,generated columns又被成为计算列(calculated columns)/虚拟列(virtual columns)等.
简介
在PG 11或以前的版本中,generated columns是不支持的:
testdb=# drop table if exists t_generated_col;NOTICE: table "t_generated_col" does not exist, skippingDROP TABLEtestdb=# create table t_generated_coltestdb-# (n1 int,testdb(# n2 int,testdb(# c1 varchar(10),testdb(# c2 varchar(10),testdb(# counter int generated always as (n1 + n2) stored,testdb(# link varchar(20) generated always as (c1 || c2) stored);ERROR: syntax error at or near "("LINE 6: counter int generated always as (n1 + n2) stored, ^counter列的值由n1和n2相加而得,而link列的值有c1和c2拼接而得.
在PG 12中,可以支持generated columns
testdb=# drop table if exists t_generated_col;psql: NOTICE: table "t_generated_col" does not exist, skippingDROP TABLEtestdb=# create table t_generated_coltestdb-# (n1 int,testdb(# n2 int,testdb(# c1 varchar(10),testdb(# c2 varchar(10),testdb(# counter int generated always as (n1 + n2) stored,testdb(# link varchar(20) generated always as (c1 || c2) stored);CREATE TABLEtestdb=# insert into t_generated_col(n1,n2,c1,c2) values(1,1,'c1','c2');INSERT 0 1testdb=# testdb=# select * from t_generated_col; n1 | n2 | c1 | c2 | counter | link ----+----+----+----+---------+------ 1 | 1 | c1 | c2 | 2 | c1c2(1 row)
生成列的值由表达式的值计算而得,如为null则为null:
testdb=# insert into t_generated_col(n1,n2,c1,c2) values(1,null,'c1',null);INSERT 0 1testdb=# select * from t_generated_col; n1 | n2 | c1 | c2 | counter | link ----+----+----+----+---------+------ 1 | 1 | c1 | c2 | 2 | c1c2 1 | | c1 | | | (2 rows)
生成列不能被update:
testdb=# update t_generated_col set counter = 10;psql: ERROR: column "counter" can only be updated to DEFAULTDETAIL: Column "counter" is a generated column.
可以创建在其上创建index:
testdb=# create index idx_t_generated_col_counter on t_generated_col(counter);CREATE INDEX
执行查询时,跟普通列没有什么区别:
^testdb=# insert into t_generated_col(n1,n2) select x,0 from generate_series(1,10000) x;INSERT 0 10000testdb=# testdb=# explain select * from t_generated_col where counter = 1000; QUERY PLAN ---------------------------------------------------------------------------------------------------- Index Scan using idx_t_generated_col_counter on t_generated_col (cost=0.29..8.30 rows=1 width=23) Index Cond: (counter = 1000)(2 rows)
到此,关于"怎么使用PostgreSQL 12中的generated columns"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
学习
更多
帮助
支持
生成
实用
普通
接下来
数据
数据库
文章
方法
版本
理论
知识
简介
篇文章
网站
表达式
资料
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
我的世界2服务器突然进不去了
青岛节点网络技术
软件开发环境一般有哪些
戴尔安全引导数据库
全球的服务器都分布在哪里
原神私人服务器下载教程手机版
dell 服务器网卡扩容
可以提供同义词表的数据库
网络软件开发学历
网络安全技术与应用童晓民
协议软件开发注重哪些
上海品质软件开发平台
网络安全落实情况报告
哪个数据库以图片为主
我们怎样维护网络安全
信息网络安全服务外包
永川区一站式软件开发服务特点
承载网络技术支撑日照
四川安卓软件开发哪家可靠
网络安全和个人便利如何取得平衡
网站数据库字典
网络技术与云计算前沿技术
群晖数据库服务器怎么用
关于网络安全的标语手抄报
网络安全宣传周小游戏
云开发数据库请求都放云函数吗
软件开发制作公司
云服务器如何安装安卓模拟器
数据库的回滚查询代码后缀名
软件开发经理核心价值