0

我有一个数据库,我需要将条目写入表。我需要确保我的表在任何给定时间都只包含 20 行(我让它变得简单)。当然,由于我在一个网络应用程序中,我同时有几个用户。

这就是我打算做的:

我使用带有按钮“AddRecord”的 aspx 页面,当我点击它时,我会这样做:

public void click(event e...)
{
    Object lockInstance = ApplicationContext["lockObject"];
    if (lockInstance  == null)
     {
     // Create Object and store it in app context.

     }

    lock(lockInstance)
    {
          // Run Query select count bla bla
          // if count < 20 then insert...
    }

}

没有触发器或存储过程(不,我没有偏见,我为之工作的人是:))

有没有比依赖 Application Context 更好的方法?

谢谢

4

1 回答 1

1

您的解决方案不适用于网络花园或负载平衡的网络农场场景。我建议您使用适当的数据库锁。

例如,您可以。开始一个事务,使用 TABLOCKX 执行一个 select 语句(以独占方式锁定表),添加一些行(如果少于 20 行),最后提交事务。

请参阅锁定提示

于 2013-06-26T16:07:21.823 回答