正确的方法执行2个SQL命令而不执行其他命令

isp*_*iro 2 .net c# sql sql-server sql-server-2012

建议的副本不回答标题中的问题.

我想执行两个MSSQL命令而没有任何其他"用户"(我不确定什么是正确的术语)在它们之间执行命令.

在搜索中,我发现了两种似乎可以实现这一目标但却不确定的方法:

  1. 使用TABLOCK. - 但我看到它被认为是不好的做法.

  2. 使用事务 - 但我能找到的只是它是原子的,而不一定是锁定其他动作.

什么方法是正确的方法?

更多信息:只有我的程序将访问数据库,但它可能来自它的几个实例,我不介意短暂的等待 - 如果一个实例必须排队等待一两秒 - 那很好.

编辑:我正在尝试插入一行并获得其身份.(似乎并不像我期望的那样直截了当.)

Jef*_*erg 11

要插入行并获取其标识,您无需阻止所有其他命令.只需将交易与SCOPE_IDENTITY以下内容结合使用:

BEGIN TRAN;

INSERT INTO MyTable (MyColumn)
VALUES ('MyValue');

SELECT SCOPE_IDENTITY();

COMMIT TRAN;
Run Code Online (Sandbox Code Playgroud)

更多关于SCOPE_IDENTITYMSDN.