我有一个db,我需要在表中写入条目。 我需要确保我的表在任何给定时间只包含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...
}
}
没有触发器或存储过程(不是我没有偏见,我正在为之工作的人是:))
有没有比依赖应用程序上下文更好的方法?
谢谢
答案 0 :(得分:1)
您的解决方案无法在Web园或负载均衡的Web场场景中运行。我建议你使用正确的数据库锁。
例如,你可以。开始一个事务,使用TABLOCKX执行select语句(它独占锁定表),添加一些行,如果少于20,最后提交事务。
请参阅locking hints。