天天看點

4.2 插入預設值

問題:

定義表時可以為某些列定義預設值,現要以預設值插入一行,而無需指定各列的值。看一下下面列出的表:

create table D (id interger default 0)

要插入零值,而不像在insert語句的值清單中明确得為該行指定0值,這裡明确的要求插入預設值,而不管預設值是什麼。

解決方案;

所有資料庫系統都支援使用default關鍵字顯示的指定某列插入預設值,有些資料庫系統還有其他的方法來解決這個問題。

下面的例子說明了使用default關鍵字來解決這個問題的方法:

insert into D values (default)

當不需要将表中所有列都插入值時,也可以明确的指定要使用預設值的列名稱

insert into D(id) values(default)

讨論:

在值清單中的default關鍵字為相應列插入預設值,預設值在建立表時定義,所有的dbms中都可以使用此關鍵字。

如果表的每列都定義了預設值(表D就是這種情況),MySQL 也可以使用其他的方法。例如,可以使用空Values清單來用預設值建立行;否則,就需要對表中的每一行指定default

如果一個表部分列有預設值,部分列沒有預設值,要向某列中插入預設值隻要将該列排除在插入清單之外,都不需要使用default關鍵字,假設表D有另外一列沒有定義預設值:

create  table D (id integer default 0, foo varchar(10))

在插入清單中隻獵虎foo字段,id中就可以插入預設值:

insert into D (name) values ('Bar')

使用上述語句的結果是FOO字段值為“Bar”而id字段的值為“0”。ID字段的值為0是因為沒有對其指定其他值。