我想要做的是将一系列日期插入到customerID = 1的多行中。我有dbo.Customer(Dates)并为其插入,指定我想要将一条记录插入到Customer表的Dates列中,对吗?我收到错误消息:
无法将值NULL插入表“ dbo.Customers”的“ CustomerId”列中
对不起,如果我不在这里。我查看了类似的主题以找出我所缺少的内容,但是我没有将它们拼凑在一起。我以为它想将现有的客户ID覆盖为NULL,但是我不确定为什么正是因为我指定了dbo.Customer(Dates)而不是该记录的现有客户ID。
declare @date_Start datetime = '03/01/2011'
declare @date_End datetime = '10/30/2011'
declare @date datetime = @date_Start
while @date <= @date_End
begin
insert into dbo.Customer(Dates) select @date
if DATEPART(dd,@date) = 0
set @date = DATEADD(dd, -1, DATEADD(mm,1,@date))
else
set @date = DATEADD(dd,1,@date)
end
select * from dbo.Customer
答案 0 :(得分:1)
主键为customerId
,但您没有插入值。
我的猜测是您将其声明为具有以下内容的主键:
customerId int primary key,
您希望它成为identity
列,因此数据库分配一个值:
customerId int identity(1, 1) primary key
然后,当您插入新行时,无需在该列中分配值-数据库会为您完成。
答案 1 :(得分:0)
您的客户表有一个名为CustomerId的列,并且该列不可为空,因此您也必须提供该列的值。如果您的列类型为Int,请尝试以下代码:
declare @date_Start datetime = '03/01/2011'
declare @date_End datetime = '10/30/2011'
declare @date datetime = @date_Start
DECLARE @cusId INT
SET @cusId = 1
while @date <= @date_End
begin
insert into dbo.Customer(CustomerId, Dates) select @cusId, @date
if DATEPART(dd,@date) = 0
set @date = DATEADD(dd, -1, DATEADD(mm,1,@date))
else
set @date = DATEADD(dd,1,@date)
SET @cusId = @cusId + 1;
end
select * from dbo.Customer
答案 2 :(得分:0)
感谢您的反馈。我想我要取消此操作,并要创建一个单独的表来联接。不知道为什么我以前没有开始做