Sql “默认”约束的问题

Sql “默认”约束的问题,sql,sql-server,Sql,Sql Server,我创建了下表 create table interiors (id integer, name varchar(20), type varchar(20) default 'baby cot', price integer) 当我不插入任何类型的值时,根据表的定义,它应该采用默认值。但当我通过“选择”查询获取所有行时,它不会显示默认值 谁能告诉我有什么问题吗 谢谢和问候, Pooja.默认值适用于在默认值处于活动状态时插入的数据,以不对表选择语句。不确定问题出在哪里,但这里有一些提示供您参考

我创建了下表

create table interiors
(id integer, name varchar(20), type varchar(20) default 'baby cot', price integer)
当我不插入任何类型的值时,根据表的定义,它应该采用默认值。但当我通过“选择”查询获取所有行时,它不会显示默认值

谁能告诉我有什么问题吗

谢谢和问候,
Pooja.

默认值适用于在默认值处于活动状态时插入的数据,以不对表选择语句。

不确定问题出在哪里,但这里有一些提示供您参考

这是T-SQL

declare @T table (ID int, Name varchar(10) default 'DEF')

insert into @T (ID, Name) values (1, 'VAL')
insert into @T (ID, Name) values (2, null)
insert into @T (ID) values (3)
insert into @T (ID, Name) values (4, default)

select ID, Name
from @T
有这个结果吗

ID          Name
----------- ----------
1           VAL
2           NULL
3           DEF
4           DEF
默认约束在为第1行和第2行中的列指定值时不使用,但在插入中忽略该列或指定默认值时使用。在执行选择操作时也不使用该选项

如果希望在select上使用默认值而不是null,则可以使用coalesce

结果

ID          Name
----------- ----------
1           VAL
2           DEF
3           DEF
4           DEF

实际上,我想我可能误解了这个问题,您能否确认问题是您希望默认值应用于预先存在的行,还是不应用于新插入的行?如果是后者,您可以向我们展示您正在使用的insert语句吗?例如,您是否显式插入NULL?请参阅,当我没有在“type”列中插入任何值时,根据“default”约束,它应该显示默认值。当我获取所有行时,“type”不显示任何值。接下来,当我在“type”列中插入不带引号的NULL时,select查询显示“NULL”字。我想要的输出是,当我没有在“type”列中插入任何内容时,它应该将默认类型显示为“baby cot”。如果希望它具有默认类型,为什么要插入NULL?您需要插入interiorsid、名称、价格值1、'foo',100,或者插入interiorsid、名称、类型、价格值1、'foo',默认值、100。插入NULL与插入任何其他显式值没有任何区别。+1。您还可以在@T ID中显示insert,名称值为4,default@Martin谢谢我不知道。我不明白你到底想说什么。请你再解释一下好吗?
ID          Name
----------- ----------
1           VAL
2           DEF
3           DEF
4           DEF