我有一个sql server数据库,我在其上使用存储过程从应用程序插入新数据。我想知道我必须做什么才能确保使用多个线程以并发正确/安全的方式调用我的数据库中的存储过程是正确的。
可能的并发问题是关于正确性。我从数据层接口调用多个存储过程,并且每个存储过程(以及它们调用的其他存储过程)以多种方式执行其更新,如果以任何“交错方式”同时完成,则可以破坏表结构的正确性(例如,从SP_1我在Table1或Table2中插入不同的元素,具体取决于与表2中某些元素y的存在相关的一些条件。
在我看来(使用表定义的方式)为了使程序正确我必须看到每个存储过程操作都是隔离完成的,而不是可以同时调用的任何其他操作(使用数据访问调用的操作)图层界面)。
在存在并发插入的情况下,一个大事务(包括作为DAL接口调用的一部分完成的所有事务)是否可以帮助我从数据库的角度来使程序正确?我不能看到(如果解决方案可行)这可以改进的方式,比如一种互斥方法,其中目前只有一个线程能够一次性地插入到数据库表中...... < / p>
答案 0 :(得分:2)
如果以任何“交错方式”同时完成
这正是用于避免交易的原因。