C# 如何避免相同的日期?

C# 如何避免相同的日期?,c#,sql,sql-server,C#,Sql,Sql Server,我有9行,这9行只更新了一个“日期”,如果我输入相同的日期,它会显示“日期率已经存在”。。我该怎么做请帮帮我你需要小心这种逻辑和日期时间。如果您知道要插入的日期,只要您不提供时间,即C#DateTime.Now vs DateTime.Today,您所拥有的就足够了 创建唯一约束的Brett是100%正确的。这将防止出现重复的情况,并有助于调试发生重复的原因。它还将帮助SQL Server引擎进行存在性检查 出于性能原因,您还可以使用“行受影响”值作为您的状态。例如 ALTER PROCEDUR

我有9行,这9行只更新了一个“日期”,如果我输入相同的日期,它会显示“日期率已经存在”。。我该怎么做请帮帮我你需要小心这种逻辑和日期时间。如果您知道要插入的日期,只要您不提供时间,即C#DateTime.Now vs DateTime.Today,您所拥有的就足够了

创建唯一约束的Brett是100%正确的。这将防止出现重复的情况,并有助于调试发生重复的原因。它还将帮助SQL Server引擎进行存在性检查

出于性能原因,您还可以使用“行受影响”值作为您的状态。例如

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