SQL 使用Null覆盖默认值,你想要插入一列,该列有默认值,但你想将其设置为 Null
而不是默认值。考虑如下的表。
SQL 使用Null覆盖默认值 问题描述
你想要插入一列,该列有默认值,但你想将其设置为 Null
而不是默认值。考虑如下的表。
create table D (id integer default 0, foo VARCHAR(10))
你希望为 ID
列插入 Null
。
SQL 使用Null覆盖默认值 解决方案
在 VALUES
列表里显式地指定 Null
。
insert into d (id, foo) values (null, 'Brighten')
SQL 使用Null覆盖默认值 扩展知识
有些人不知道 INSERT
语句的 VALUES
列表可以显式指定 Null
。一个典型的例子可以证明这一点,当不想为某一列插入特定值的时候,有些人会把该列从 VALUES
列表里去掉。
insert into d (foo) values ('Brighten')
在这里,并没有指定 ID
列的值。许多人可能以为 ID
列会被插入 Null
,但是因为创建表的时候预设了默认值,所以上述 INSERT
语句执行后,ID
列会被设置为 0(默认值)。通过明确指定某字段为 Null
,即使该字段有预设的默认值也能为其插入 Null
。