2011-12-12 71 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