vb.net,sql server 2008 r2,过程
我的复合主键有问题。我有张桌子:
CREATE TABLE example (
column1 NUMERIC,
column2 NUMERIC,
PRIMARY KEY (column1, column2)
);
1-1
1-2
1-2
2-1
2-2
2-3
3-1
...但有时用户会收到错误..。“无法插入重复密钥”。
试图找出原因.我正在以下列方式进行插入:
在我的vb.net应用程序中,首先选择最后一个column1数。在它之后,我加上+1。
示例:
Dim column2 As Integer = 206
// Here I get the last number of column1, and then I add + 1
Dim column1 As Integer = DALExample.GetLastNumber(column2)
// Here I insert the next row
DALExample.Insert(column1 + 1, column2)--我有成千上万的用户,也许还有两个用户同时在做,然后他们得到了错误。
我想做什么来解决这个问题:
我不会在我的web应用程序中选择column1的最后一个值。我会在我的程序中直接这样做。示例:
INSERT INTO example
(column1,
column2)
SELECT
ISNULL(MAX(column1), 0) + 1 FROM example WHERE column2 = 206,
206就这样,有可能翻倍吗?(我在寻找自动增量,但在复合主键中是不可能的)有什么更好的方法吗?
谢谢!
发布于 2014-07-03 08:56:48
给出的语句仍然可以得到重复的键错误。当两个用户想要同时插入时,他们同时执行insert的select查询,并获得相同的值。
以下是一些处理这些问题的方法:
https://stackoverflow.com/questions/24548316
复制相似问题