插入之前锁定表

时间:2012-10-29 19:06:11

标签: sql-server-2008 insert network-programming locking

我创建了一个适用于网络的C#应用​​程序。我将SQL Server 2008 Express用于我的应用程序。

我的问题是:

当2台计算机上的2个人同时点击Insert按钮时,会在数据库中添加2行,但编号相同(即错误)。

如果时间不一样,我的应用程序会检查一些条件,这个问题不会发生。

我的问题是:

现在我需要在插入1个人之前锁定表并在插入后解锁表。

怎么做?

1 个答案:

答案 0 :(得分:0)

您必须使用IDENTITY列。

如果你想在sql server中锁定表,你可以这样做

INSERT INTO Table1 WITH (TABLOCK)
SELECT @Col1, @Col2, @Col3, @Col4 OPTION (FAST 1)

UPDATE Table1 WITH (TABLOCK) 
SET Col5 = @Col5
WHERE @Col1 = @Var

UPDATE Table2 WITH (TABLOCK) 
SET Col = @ColVal