我正在使用c#和SqlServer开发简单的拍卖应用程序。
我有一个Auction
实体。为简单起见,它具有下一个结构:
AuctionId
ItemId
StartPrice
StartDate
Status
CurrentPrice
BidderId
LastBiddedat
知道它不是正常形式,这里没关系。不是生产代码。
如果过去2分钟内没有任何出价,我需要更新Auction Status
。没有出价 - 拍卖状态设置为Inactive
。
我可以通过SqlDependency
跟踪c#代码中的数据库更改,但效果非常好。
现在我需要一种机制来在拍卖时间结束时更新数据库。为简单起见,我想在数据库层上这样做。
可以通过SQL Agent
完成,甚至还有一个示例如何how to schedule a job for sql query to run daily?。
也许你还有其他选择? 只是好奇。
答案 0 :(得分:1)
常见的解决方案是轮询或实现某种调度程序。创建SQL依赖项实际上并没有帮助,因为这是从数据库数据更改触发的。你的触发是“没有变化”。
从应用程序轮询通常是一个坏主意,因为这会在其他问题中产生不必要的网络流量。
正如您所提到的那样,使用内置的SQL代理作业调度程序来运行存储过程并更新2分钟以上且不活动的拍卖的状态是最好的选择。这是数据库的一部分,因此将创建最小的网络流量(如果有的话)。它是SQL Server的一部分,因此可以快速顺畅地运行。它也很容易设置。这是我的建议。