我的情况是,即使检查已经实现,我也会在表中插入多条记录,我将解释下面代码的流程。
BEGIN Transection;
var model = select id from table1 where outlet_code = 123 and survey_id = 5
if(model){
throw new Exception("Outlet is already Surveyed.");
}else{
INSERT Record into the table
}
Commit Transection;
问题: 我从移动端收到多个上传调查请求,但是当我收到多个具有相同插座代码的请求时会出现问题。
First Request outlet_code = 123abc and survey_id = 5
Second Request outlet_code = 123abc and survey_id = 5
重点是不应在代码中插入第二个请求,但在某些情况下,两个记录都插入到" table1"
我测试了这个场景,但是我得到了例外,这很好,但是数据库中有违反这个条件的记录,我在数据库中得到了两个记录
请告诉我我做错了什么,我只是想知道它可能是交易提交顺序的问题,但我不知道如何解决这种情况。
数据库是SQL Server 2008。
答案 0 :(得分:0)
最简单,最干净的方法是在ID列上创建主键,因此表格不会接受任何带有重复ID的插入。这将在第二个插入时引发错误,因此也应该处理它。