我必须在表中的一行上设置一个锁,以进行读取/更新。我已经写了下面的代码,但它花费了太多的时间。请建议任何其他方法。
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_keys:它存储许多表的主键&它是序列的替代品
tbl_docs:这是我必须插入N行的表
发布于 2013-01-15 23:28:14
为什么要在更新之前读取值?只需在更新中使用该值,您根本不需要事务:
DECLARE @v_new_rows NUMERIC;
SET @v_new_rows = 10;
update tbl_keys set id = id + @v_new_rows where name='tbl_docs' https://stackoverflow.com/questions/14340907
复制相似问题