5.2. 默认值
一个列可以被分配一个默认值。当一个新行被创建且没有为某些列指定值时,这些列将会被它们相应的默认值填充。一个数据操纵命令也可以显式地要求一个列被置为它的默认值,而不需要知道这个值到底是什么(数据操纵命令详见第 6 章)。
如果没有显式指定默认值,则默认值是空值。这是合理的,因为空值表示未知数据。
在一个表定义中,默认值被列在列的数据类型之后。例如:
CREATE TABLE products ( product_no integer, name text, price numeric DEFAULT 9.99 );复制
默认值可以是一个表达式,它将在任何需要插入默认值的时候被实时计算(不是表创建时)。一个常见的例子是为一个timestamp
列指定默认值为CURRENT_TIMESTAMP
,这样它将得到行被插入时的时间。另一个常见的例子是为每一行生成一个“序列号” 。这在PostgreSQL可以按照如下方式实现:
CREATE TABLE products ( product_no integer DEFAULT nextval('products_product_no_seq'), ... );复制
这里nextval()
函数从一个序列对象第 9.17 节)。还有一种特别的速写:
CREATE TABLE products ( product_no SERIAL, ... );复制
SERIAL
速写将在第 8.1.4 节进一步讨论。
文章转载自PostgreSQL全球开发组,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
9.9 分高危漏洞,尽快升级到 pgAdmin 4 v9.2 进行修复
严少安
343次阅读
2025-04-11 10:43:23
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
326次阅读
2025-04-15 14:48:05
外国CTO也感兴趣的开源数据库项目——openHalo
小满未满、
289次阅读
2025-04-21 16:58:09
openHalo问世,全球首款基于PostgreSQL兼容MySQL协议的国产开源数据库
严少安
289次阅读
2025-04-07 12:14:29
postgresql+patroni+etcd高可用安装
necessary
157次阅读
2025-03-28 10:11:23
手把手教你在 openKylin 上部署 IvorySQL 4.4
严少安
150次阅读
2025-03-27 20:41:28
从 Oracle 到 PostgreSQL迁移成本评估揭秘
梧桐
148次阅读
2025-03-27 17:21:42
转发有奖 | PostgreSQL 16 PGCM高级认证课程直播班招生中!
墨天轮小教习
142次阅读
2025-04-14 15:58:34
墨天轮PostgreSQL认证证书快递已发(2025年3月批)
墨天轮小教习
125次阅读
2025-04-03 11:43:25
从Percona 发布Pro级产品得到的一些启发
库海无涯
123次阅读
2025-03-26 08:45:23