假设我有一个名为“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,有没有办法设置列的默认值?
答案 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例如代码。