SQL Server。如何在插入时对表格应用独占锁定?

时间:2016-06-13 08:59:04

标签: sql sql-server

如何在进行插入时对表应用独占锁?在我的情况下,两个不同的线程将值插入到同一个表中,并且它们无法看到正在插入的其他事务的数据。

我希望在一个事务插入行时,其他事务等待,直到第一个事务完成插入值。

一块SQL触发器: -

BEGIN
    insert into A(SETID,ACCTID,UPDATEDTM)
    select @setid, l.acctid, getdate() 
    from AccountTable l where --(conditions for where clause)

我想锁定表A以完成插入操作。

1 个答案:

答案 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)

进一步阅读;

https://msdn.microsoft.com/en-GB/library/ms187373.aspx

TABLOCK vs TABLOCKX