PostgreSQL 默認(rèn)值

2021-08-26 09:52 更新

一個(gè)列可以被分配一個(gè)默認(rèn)值。當(dāng)一個(gè)新行被創(chuàng)建且沒(méi)有為某些列指定值時(shí),這些列將會(huì)被它們相應(yīng)的默認(rèn)值填充。一個(gè)數(shù)據(jù)操縱命令也可以顯式地要求一個(gè)列被置為它的默認(rèn)值,而不需要知道這個(gè)值到底是什么(數(shù)據(jù)操縱命令詳見(jiàn)第 6 章)。

如果沒(méi)有顯式指定默認(rèn)值,則默認(rèn)值是空值。這是合理的,因?yàn)榭罩当硎疚粗獢?shù)據(jù)。

在一個(gè)表定義中,默認(rèn)值被列在列的數(shù)據(jù)類(lèi)型之后。例如:

CREATE TABLE products (
    product_no integer,
    name text,
    price numeric DEFAULT 9.99
);

默認(rèn)值可以是一個(gè)表達(dá)式,它將在任何需要插入默認(rèn)值的時(shí)候被實(shí)時(shí)計(jì)算(是表創(chuàng)建時(shí))。一個(gè)常見(jiàn)的例子是為一個(gè)timestamp列指定默認(rèn)值為CURRENT_TIMESTAMP,這樣它將得到行被插入時(shí)的時(shí)間。另一個(gè)常見(jiàn)的例子是為每一行生成一個(gè)序列號(hào) 。這在PostgreSQL可以按照如下方式實(shí)現(xiàn):

CREATE TABLE products (
    product_no integer DEFAULT nextval('products_product_no_seq'),
    ...
);

這里nextval()函數(shù)從一個(gè)序列對(duì)象第 9.17 節(jié))。還有一種特別的速寫(xiě):

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

SERIAL速寫(xiě)將在第 8.1.4 節(jié)進(jìn)一步討論。


以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)