2011-12-12 182 views
2

比方說,我有一個名爲「表」SQLite的默認值,如果空

所以

Create Table "Table" (a int not null, b int default value 1) 

表如果我做了「INSERT INTO "Table" (a) values (1)」。我將返回1列a和b列作爲列b的默認值爲1.

但如果我做「INSERT INTO "Table" (a, b) values (1, null)」。我會在第一列下注1,在第二列下注空白值。如果給出空值,是否有辦法設置列的默認值?

回答

1

不,如果你正在做的:

INSERT INTO my_table (a, b) values (1, null) 

您是明確地要求一個null值上b列。

在RDBMS中,您可以在技術上使用觸發器來覆蓋該行爲。但在SQLite中,你不能。

1

如果你不想爲b列空值,那麼你應該將其設置爲一個非空能場,你有a

+1

謝謝,我不好意思問這個問題......只是有一天。 – Pittfall

0

This solution for MySQL做大多應該SQLite的工作。主要的,雖然主要的區別在於SQLite中似乎沒有像MySQL中那樣的Default()函數。通過在PHP中跟蹤我的數據庫模式,然後手動插入缺省值作爲Coalesce()的第二個參數,我能夠複製此功能。例如代碼爲See this Gist