🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 5.2\. 缺省值 一个字段可以赋予缺省值。如果新创建了一个数据行,而有些字段的数值没有声明, 那么这些字段将被填充为它们各自的缺省值。 一条数据修改命令也可以明确地要求把一个字段设置为它的缺省值,而不用事先知道这个缺省值是什么。 有关数据操作的命令在[Chapter 6](#calibre_link-1758)。 如果没有明确声明缺省值,那么缺省值是 NULL 。这么做通常是合理的,因为 NULL 表示"未知"。 在一个表定义里,缺省值是在字段数据类型后面列出的。比如: ``` 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()`从一个_序列对象_(参阅[Section 9.16](#calibre_link-700)) 提供后继的数值。这种做法非常普遍,以至于我们有一个专门的缩写用于此目的: ``` CREATE TABLE products ( product_no **SERIAL**, ... ); ``` `SERIAL`缩写在[Section 8.1.4](#calibre_link-1175)里有进一步描述。