C# 如何避免相同的日期?
我有9行,这9行只更新了一个“日期”,如果我输入相同的日期,它会显示“日期率已经存在”。。我该怎么做请帮帮我你需要小心这种逻辑和日期时间。如果您知道要插入的日期,只要您不提供时间,即C#DateTime.Now vs DateTime.Today,您所拥有的就足够了 创建唯一约束的Brett是100%正确的。这将防止出现重复的情况,并有助于调试发生重复的原因。它还将帮助SQL Server引擎进行存在性检查 出于性能原因,您还可以使用“行受影响”值作为您的状态。例如C# 如何避免相同的日期?,c#,sql,sql-server,C#,Sql,Sql Server,我有9行,这9行只更新了一个“日期”,如果我输入相同的日期,它会显示“日期率已经存在”。。我该怎么做请帮帮我你需要小心这种逻辑和日期时间。如果您知道要插入的日期,只要您不提供时间,即C#DateTime.Now vs DateTime.Today,您所拥有的就足够了 创建唯一约束的Brett是100%正确的。这将防止出现重复的情况,并有助于调试发生重复的原因。它还将帮助SQL Server引擎进行存在性检查 出于性能原因,您还可以使用“行受影响”值作为您的状态。例如 ALTER PROCEDUR
ALTER PROCEDURE [dbo].[K_FS_InsertMrpDetails]
@date datetime,
@feedtype varchar(50),
@rateperkg float,
@rateper50kg float,
@updatedby varchar(50)
AS
BEGIN
if exists(select * from K_FS_GenerateDcno where date = @date)
begin
select '1' as status
end
else
begin
insert into K_FS_FeedMrpDetails([date],feedtype,rateperkg,rateper50kg,
updatedby,updatedon) values (@date,@feedtype,@rateperkg,@rateper50kg,
@updatedby,getdate())
select '2' as status
END
这个语句可以输出参数,但对于这个场景,我不会说它确实是必需的
注意:-我是在SQL之外键入的,如果我遗漏了什么,请告诉我。此过程中没有“日期费率已存在”。尝试查找验证输入数据的代码。可能有一个insert触发器我在C#.net中使用Dynamic GridView..我在一个日期中插入了9行..我在这里只是猜测,所以我怀疑每个feedtype每天只允许一个速率。这对我来说是有意义的。检查表
K_FS_feedmrpdails
或其他提供“日期速率已存在”的验证代码上的约束。还要检查您尝试输入的数据是否已存在于表中,并且需要先删除。
INSERT INTO [dbo].[K_FS_InsertMrpDetails]....
SELECT @date...
FROM [dbo].[K_FS_InsertMrpDetails]
WHERE (NOT (EXISTS (SELECT TOP 1 1
FROM [dbo].[K_FS_InsertMrpDetails]
WHERE date = @date))
SELECT @@ROWCOUNT + 1 AS Status