C# 如何限制ASP.NETWeb表单中每天保存的记录数?

C# 如何限制ASP.NETWeb表单中每天保存的记录数?,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我正在使用ASP.NET创建患者预约系统。 我想把每天的预订数量限制在25次 根据建议,我获得了以下SQL触发器代码: CREATE TRIGGER trg_CheckAppointmentCount ON dbo.schedule_master AFTER INSERT,UPDATE AS BEGIN IF EXISTS (SELECT 1 FROM dbo.schedule_master YT WHERE YT. Schedule_Date IN

我正在使用ASP.NET创建患者预约系统。 我想把每天的预订数量限制在25次

根据建议,我获得了以下SQL触发器代码:

CREATE TRIGGER trg_CheckAppointmentCount ON dbo.schedule_master AFTER 
INSERT,UPDATE
AS BEGIN
IF EXISTS (SELECT 1
           FROM dbo.schedule_master YT
           WHERE YT. Schedule_Date IN (SELECT i Schedule_Date FROM inserted)
           GROUP BY YT. Schedule_Date
           HAVING COUNT(YT.KeyColumn) > 25)
    THROW 50012, N'Cannot have more than 25 appointments on a single day.', 16;
END;
GO    

但我没有键列。请建议任何更改。

我想知道您为什么要限制预订数量;然而这可以通过后端系统中的一个简单计数器来实现。Perhass对max record进行了一些配置,以便将来可以对其进行更改,而不仅仅是将其限制为25。因此,在创建新预订时获取创建的总记录;如果在本例中大于配置限制25,只需向用户显示一条消息


希望这能帮助你建立逻辑

在我看来,这最好在SQL Server端处理。使用约束无法完成此操作,但可以使用触发器。这是伪SQL,但可能类似于:

CREATE TRIGGER trg_CheckAppointmentCount ON dbo.YourTable
AFTER INSERT,UPDATE
AS BEGIN

    IF EXISTS (SELECT 1
               FROM dbo.YourTable YT
               WHERE YT.DateColumn IN (SELECT i.DateColumn FROM inserted i)
               GROUP BY YT.DateColumn
               HAVING COUNT(YT.KeyColumn) > 25)
        THROW 50012, N'Cannot have more than 25 appointments on a single day.', 16;
END;
GO

你能提供你到目前为止试过的代码吗?你的域模型等呢?我没有KeyColumn。使用您的解决方案,下面是我的SQL触发器代码。插入后在dbo.schedule\u master上创建触发器trg\u CheckAppointmentCount,如果存在则更新为BEGIN从dbo.schedule\u master YT中选择1,其中YT.schedule\u Date在插入组中选择y.schedule\u Date BY YT.schedule\u Date,COUNTYT.KeyColumn>25,N‘一天不能有超过25个预约’,,16;终止请检查并发表评论。对不起,我看不到评论中的SQL。评论不是它的位置。我已经编辑了我的原始问题。请参考。如果您没有密钥,请计算另一个非空列@FlaSh9293。我使用Schedule_Date列代替了不为空的KeyColumn。但是,对于i.Schedule\u Date,它显示了一个错误,无法找到多部分标识符“i.Schedule\u Date”