我不确定如何明智地做这个'最佳实践'。
我有一个连接到MS SQL Server 2012的Web应用程序(asp.net VB)。当前页面加载应用程序连接到数据库表并获取最后一个ID并向其添加1并将其显示给用户。当用户提交表单时,新ID将保存到DB中。
作为应用程序的问题可能由2个用户同时打开,因此他们将被分配相同的ref编号,这将导致数据保存时出现问题。
如果同时打开应用程序而不保存不必要的数据,如何为不同的用户分配不同的号码?
答案 0 :(得分:0)
您有多种解决方案,我将尝试概述几种方法。 (我假设您需要将内容插入到我称之为“订单”的数据库中。)
首先,您可以将ID生成移动到实际插入订单的那一刻,而不是在用户开始输入数据时。这样,您就不会为永远不会完成表单的用户生成ID。此外,使用sql server中的自动增量值也很容易实现此方案。例如,您可以这样做:
-- create a table with an identity column
create table Orders (
ID int identity(1,1) not null,
Description nvarchar(max) not null
);
-- insert values, without specifying the ID column
insert into Orders (Description) values ()
-- select the row back
-- returns 1, 'My First Order'
select * from Orders;
另一种方法是使用SQL Server Sequences。这些是除了连续生成数字之外什么都不做的事情。它们保证数字不会重复,并始终保持当前值的计数,即
-- create a sequence
create sequence OrderIdSequence
start with 1
increment by 1;
-- get the next sequence value
select next value for OrderIdSequence