在事务中重复插入

时间:2016-01-22 06:48:52

标签: php sql sql-server database sqltransaction

我的情况是,即使检查已经实现,我也会在表中插入多条记录,我将解释下面代码的流程。

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。

1 个答案:

答案 0 :(得分:0)

最简单,最干净的方法是在ID列上创建主键,因此表格不会接受任何带有重复ID的插入。这将在第二个插入时引发错误,因此也应该处理它。