| PostgreSQL 8.0.0 中文文件(轉譯自 PostgreSQL 中國 製作的簡體中文版本) | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 5. 資料定義 | Fast Forward | Next |
一個字串可以賦予預設值。如果新建立了一個資料行,而有些字串的數值沒有聲明,那麼這些字串將被填充與它們各自的預設值。 一條資料修改命令也可以明確地要求把一個字串設置成為它地預設值, 而不用事先知道這個數值是什麼。(有關資料操作的命令在 Chapter 6。)
如果沒有明確聲明預設值,那麼預設值是空。 這麼做通常是合理的,因為空值可以認為代資料表未知資料。
在一個資料表定義裡,預設值是在字串資料類型後面列出。比如:
CREATE TABLE products (
product_no integer,
name text,
price numeric DEFAULT 9.99
);
預設值可以是一個標量資料表達式,它會在插入預設值的時候計算(不是建立資料表的時候)。 一個常見的例子是一個 timestamp 字串可能有預設值 now(), 這樣它就設置為插入行的時刻。 另外一個常見的例子是為每一行生成一個"序列號"。 在 PostgreSQL 裡,通常是用類似下面這樣的東西生成的
CREATE TABLE products (
product_no integer DEFAULT nextval('products_product_no_seq'),
...
);這裡的 nextval() 從一個序列對像 (參閱 Section 9.12)提供後繼的數值。 這種做法非常普遍,以至於我們有一個特殊的縮寫用於此目的:
CREATE TABLE products (
product_no SERIAL,
...
);SERIAL 縮寫在Section 8.1.4 裡有進一步描述。