列可以被指定一個預設值。當建立新行時,如果沒有為某些列指定值,那些列將用它們各自的預設值填充。資料操作命令也可以明確地要求一列被設定為其預設值,而無需知道該值是什麼。(有關資料操作命令的詳細資訊,請參見 第 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.17 節)提供連續的值。這種安排非常常見,以至於有一個特殊的簡寫方式:
CREATE TABLE products (
product_no SERIAL,
...
);
SERIAL
簡寫方式在 第 8.1.4 節 中有更詳細的討論。
如果您在文件中發現任何不正確之處,與您在使用特定功能時的經驗不符,或者需要進一步澄清,請使用 此表單 報告文件問題。