如何在进行插入时对表应用独占锁?在我的情况下,两个不同的线程将值插入到同一个表中,并且它们无法看到正在插入的其他事务的数据。
我希望在一个事务插入行时,其他事务等待,直到第一个事务完成插入值。
一块SQL触发器: -
BEGIN
insert into A(SETID,ACCTID,UPDATEDTM)
select @setid, l.acctid, getdate()
from AccountTable l where --(conditions for where clause)
我想锁定表A
以完成插入操作。
答案 0 :(得分:2)
给TABLOCKX一个去,这将给你数据的独占锁;
BEGIN
INSERT INTO A WITH (TABLOCKX) (SETID,ACCTID,UPDATEDTM)
SELECT @setid, l.acctid, getdate()
FROM AccountTable l WHERE (conditions for where clause)
进一步阅读;