SQLite默认值,如果为null

时间:2011-12-12 18:16:22

标签: sqlite insert null default-value

假设我有一个名为“table”的表

所以

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

如果我做“INSERT INTO "Table" (a) values (1)”。我将为列a返回1,为列b返回1,因为列b的默认值为1。

但如果我做“INSERT INTO "Table" (a, b) values (1, null)”。我会为第一列下注1,为第二列下注空值。如果给出了null,有没有办法设置列的默认值?

3 个答案:

答案 0 :(得分:1)

不,如果你这样做:

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

明确要求null列上的b值。

在RDBMS中,您可以在技术上使用触发器来覆盖该行为。但是在SQLite中你不能。

答案 1 :(得分:1)

如果您不希望列b为空,那么您应该像使用a

那样将其设置为非空值字段

答案 2 :(得分:0)

This solution for MySQL应该主要适用于SQLite。主要的,虽然主要的区别是,在SQLite中似乎没有像{MySQL}那样的Default()函数。我能够通过在PHP中跟踪我的数据库模式然后手动将默认值作为第二个参数插入Coalesce()来复制此功能。 See this Gist例如代码。