2

我有一个在 SQL Server 2008 表中插入一行的 Web 表单。表有一个必须唯一的字段,但由于某些原因,我们不允许使用自动增量实用程序。取而代之的是,我选择了该字段的最大值并从代码中增加它并插入具有该 ID 的行。

问题是,如果多人同时使用此表单,则会出现并发问题,并且会将相同的 id 插入到表中。我不知道如何在 asp.net web 项目中解决这个问题,因为所有用户都有自己的会话和线程。

关于如何在 asp.net 项目中管理并发问题的任何想法都将非常有用。

谢谢。

4

1 回答 1

1

如果您在存储过程中或在代码中的事务中执行插入操作,我看不出存在并发问题的原因。就像是:

BEGIN TRAN
DECLARE @MAX int
SELECT @MAX = MAX(ID) FROM MyTable
INSERT INTO MyTable (@MAX, VAlue, Value2..)
COMMIT TRAN

或者

SqlCommand command = connection.CreateCommand();
SqlTransaction transaction;
transaction = connection.BeginTransaction("InsertRow");

... perform insert using command object ...

transaction.Commit();
于 2012-06-28T13:47:29.007 回答