缺省值

PostgreSQL 9.4.4 中文手册
上一页 | 上一级 | 章 5. 数据定义 | 下一页

# 5.2. 缺省值

一个字段可以赋予缺省值。如果新创建了一个数据行，而有些字段的数值没有声明， 那么这些字段将被填充为它们各自的缺省值。 一条数据修改命令也可以明确地要求把一个字段设置为它的缺省值，而不用事先知道这个缺省值是什么。 有关数据操作的命令在第 6 章。

如果没有明确声明缺省值，那么缺省值是 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()`从一个序列对象(参阅第 9.16 节) 提供后继的数值。这种做法非常普遍，以至于我们有一个专门的缩写用于此目的：

    CREATE TABLE products (
        product_no SERIAL,
        ...
    );

`SERIAL`缩写在第 8.1.4 节里有进一步描述。

上一页 | 起始页 | 下一页
表的基本概念 | 上一级 | 约束