Sql server 行锁sql server

Sql server 行锁sql server,sql-server,locking,row,Sql Server,Locking,Row,我必须锁定表中的一行进行读取/更新。 我已经写了下面的代码,但是它花费了太多的时间。 请建议其他方法 BEGIN TRANSACTION DECLARE @v_id_counter NUMERIC; DECLARE @v_new_rows NUMERIC; SET @v_new_rows = 10; SELECT @v_id_counter = id FROM tbl_keys [UPDLOCK ROWLOCK] with (Xlock)

我必须锁定表中的一行进行读取/更新。 我已经写了下面的代码,但是它花费了太多的时间。 请建议其他方法

BEGIN TRANSACTION 
DECLARE @v_id_counter NUMERIC;  
DECLARE @v_new_rows NUMERIC;
SET @v_new_rows = 10;   

        SELECT @v_id_counter = id 
        FROM tbl_keys [UPDLOCK  ROWLOCK] with (Xlock) 
        WHERE name='tbl_docs'

        update tbl_keys set id = (@v_id_counter + @v_new_rows ) where name='tbl_docs'        
COMMIT;
tbl_键
:它存储许多表的主键&它的序列替换项


tbl_docs
:在该表中,我必须插入N行

为什么要在更新之前读取值?只需在更新中使用该值,您根本不需要事务:

DECLARE @v_new_rows NUMERIC;
SET @v_new_rows = 10;   

update tbl_keys set id = id + @v_new_rows where name='tbl_docs'        

该值是一个输出参数