【发布时间】:2016-01-22 06:48:51
【问题描述】:
我有一个场景,即使执行了检查,我也将多条记录插入到表中,我解释下面的代码流程。
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。
【问题讨论】:
-
PRIMARY KEY WITH(IGNORE_DUP_KEY=ON)? -
你正在使用什么数据库 1.) mysql 2.) postgresql 或 ????
-
如果您使用的是 postgresql,则使用:UPSERT:如果数据已经退出,它将修改,否则将插入表中
标签: php sql sql-server database sqltransaction