这是一个自动递增 ID、接受时间输入并将总计列的默认值设置为零和日期列的默认值的表getdate()
CREATE TABLE OrderPlaced (
OrderID bigint IDENTITY(1,1) PRIMARY KEY,
PlacedAt time NOT NULL,
PlacedOn DATE NOT NULL default getdate(),
Total MONEY default 0
)
所以我必须插入的唯一值是时间。
insert into OrderPlaced values ('13:40');
但是在插入时 SQL Server 给了我这个错误:
列名称或提供的值的数量与表定义不匹配。
错误is告诉你问题所在。你的桌子,OrderPlaced
, has four列,但您只提供one栏目中的INSERT
并且不要告诉实例将其插入到哪一列。
对于您的表,如果您没有指定列,那么它将期望值PlacedAt
, PlacedOn
and Total
;它不会期望一个值OrderID
因为它是一个IDENTITY
并且你还没有开机IDENTITY_INSERT
。由于实例需要 3 列,而您只提供一列,因此您会收到一条错误消息,告诉您列数不匹配 (3 != 1)。
如果您只想插入一个值PlacedAt
,并允许其余列使用它们的DEFAULT
然后在你的值中定义INSERT
您只想为其提供值的子句PlacedAt
:
INSERT INTO dbo.OrderPlaced(PlacedAt)
VALUES ('13:40');
或者,如果您(奇怪地)反对在中定义列INSERT
子句,然后告诉实例其他 2 列需要它们的DEFAULT
values.
INSERT INTO dbo.OrderPlaced
VALUES ('13:40',DEFAULT, DEFAULT);
虽然我不推荐这种解决方案,但要明确,因为如果您更改表的定义,则上述语句将失败。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)