1

我正在使用带有数据库优先方法的 ASP.NET MVC3 和实体框架。我有一个带有 id(key)、数字和描述列的表。我需要在插入项目后生成一个数字。我在生成我需要的数字的地方创建而不是触发器(这取决于数据库中已经存在的最后一个数字)。问题是:当用户同时插入项目时,两种情况下的数字是相同的。因此,对于两个插入的项目,触发器都会触发,并且在触发器内部,select 返回相同的最后一个已存在的项目数。

解决此类问题的最佳做法是什么?谢谢。

4

1 回答 1

1

我相信这会对你有所帮助。

http://www.sqlteam.com/article/custom-auto-generated-sequences-with-sql-server

此外,如果您使用的是 SQL Server 2012,还有一个称为 SQL 序列的新功能。这是 Oracle 数据库长期以来所拥有的东西。

如果您需要这些数字而没有任何间隙,我建议您锁定表(防止写入),查询它,使用 max(number) 更新行并解锁它。

于 2012-11-29T12:30:02.820 回答