我有一个预先存在的sqlserver表。在其他字段中,它具有称为ID的标识列,其也是主键,而RecordNumber列是必需字段。 RecordNumber列中的int值必须是唯一的。因此,在插入行之前,我获取ID列的最大值,向其添加1,然后插入具有RecordNumber字段= ID + 1的行。问题是当两个用户同时尝试保存时,他们可能会获取相同的ID值,因此将在RecordNumber字段中保存相同的值。请让我知道如何解决这个问题。
由于
答案 0 :(得分:1)
答案 1 :(得分:0)
您可以使用“提交”和“回滚”操作来使用“事务”概念。
MSDN上非常有趣的链接:http://msdn.microsoft.com/en-gb/library/ms190295.aspx
答案 2 :(得分:0)
CREATE TABLE SampleTable
(
P_Id int NOT NULL Identity(1,1),
FirstName varchar(255),
PRIMARY KEY (P_Id)
)
CREATE TABLE SampleTable
(
P_Id uniqueidentifier NOT NULL,
FirstName varchar(255),
PRIMARY KEY (P_Id)
)
ALTER TABLE [dbo].[SampleTable]
ADD CONSTRAINT [DF_SampleTable_P_Id]
DEFAULT newsequentialid() FOR [P_Id]
CREATE TABLE SampleTable
(
P_Id Varchar(100) NOT NULL,
FirstName varchar(255),
PRIMARY KEY (P_Id)
)
ALTER TABLE [dbo].[SampleTable]
ADD CONSTRAINT [DF_SampleTable_P_Id]
DEFAULT (newid()) FOR [P_Id]
BEGIN TRY
SET NOCOUNT ON
SET XACT_ABORT ON
Begin TRAN
--Your Code
COMMIT TRAN
END TRY
BEGIN CATCH
ROLLBACK TRAN
END CATCH