缺省值 ---------- 一个列可以赋予缺省值。如果新创建了一个数据行,而有些列的数值没有声明,那么这些列将被填充为它们各自的缺省值。一条数据修改命令也可以明确地为一个列设置为它的缺省值,而不用事先知道这个缺省值是什么。 如果没有明确声明缺省值,那么缺省值是 NULL 。这么做通常是合理的,因为 NULL 表示"未知"。 在一个表定义里,缺省值是在列数据类型后面列出的。比如: :: CREATE TABLE products ( product_no integer, name text, price numeric DEFAULT 9.99 ); 缺省值可以是一个表达式,它会在插入缺省值的时候计算(不是在创建表的时候)。一个常见的例子是一个timestamp列可能有缺省值now(),它表示插入行的时刻。另外一个常见的例子是为每一行生成一个"序列号"。在 OushuDB 里,通常是用类似下面这样的方法生成的: :: CREATE TABLE products ( product_no integer DEFAULT nextval('products_product_no_seq'), ... ); 这里的nextval()从一个 *序列对象* 提供后继的数值。这种做法非常普遍,以至于我们有一个专门的缩写用于此目的: :: CREATE TABLE products ( product_no SERIAL, ... ); .. note:: MAGMA格式和HORC格式的表均支持为列设置缺省值。