.NET执行ORA-0001多次调用ORACLE

时间:2014-02-07 10:23:06

标签: c# sql oracle asp.net-mvc-3

我已经注意到在.NET应用程序(MVC3和Web Froms)中,偶尔某些被调用的过程会执行多次。 (它非常简单(链接点击)调用所以它在c#中没有问题) 链接点击代码示例:

try{
     using (var context = new DB())
                {                                       
                    context.some_procedure(user_id, order_id, "string");
                }
}
catch(Exception ex)
{
     Log.Error("some_procedure " + ex.Message + ex.InnerException);
     return null;
}

在Oracle程序中也要注意重复。 我必须添加列iduser和idorder在table1上有唯一的索引约束(pair_unique_const)

some_procedure(number user_id, number order_id, varchar2 string)
.
.
.
    SELECT COUNT(*)
             INTO var_exists
             FROM table1 WHERE
             iduser = user_id and idorder = order_id;

IF var_exists = 0 then 

insert into table1 (id, iduser, idorder, text)
select(sequence.nextval, user_id, order_id, string);

Commit;

end if;
.
.
.

仍有错误ORA-0001不时发生,表明违反了pair_unique_const(唯一约束索引),并且可能发生重复(如果我没有放置pair_unique_const)。

否则在此表中插入其他内容! 所以我假设.NET在几毫秒内点击ocassionaly进行多次调用。 或者它可能是我不知道的ODAC故障。

由于我对这两列有唯一约束,因此不会发生插入。 同时在c#中进行事务调用,然后在完成所有操作时提交帮助并解决了问题。

但我只是想知道为什么会这样? 点击链接调用应该只发出一个请求。

提前谢谢!

0 个答案:

没有答案