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

SQL Server。如何在进行插入时对表应用独占锁?,sql,sql-server,Sql,Sql Server,如何在进行插入时对表应用独占锁?在我的例子中,两个不同的线程将值插入到同一个表中,它们无法看到其他事务的数据被插入 我希望当一个事务插入行时,另一个事务等待第一个事务完成插入值 一个SQL触发器:- BEGIN insert into A(SETID,ACCTID,UPDATEDTM) select @setid, l.acctid, getdate() from AccountTable l where --(conditions for where clause)

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

我希望当一个事务插入行时,另一个事务等待第一个事务完成插入值

一个SQL触发器:-

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

我想为正在执行的插入操作锁定table
A

尝试一下TABLOCKX,这将为您提供对数据的独占锁定

BEGIN
INSERT INTO A WITH (TABLOCKX) (SETID,ACCTID,UPDATEDTM) 
SELECT @setid, l.acctid, getdate() 
FROM AccountTable l WHERE (conditions for where clause)
进一步阅读


尝试TABLOCKX这将为您提供对数据的独占锁定

BEGIN
INSERT INTO A WITH (TABLOCKX) (SETID,ACCTID,UPDATEDTM) 
SELECT @setid, l.acctid, getdate() 
FROM AccountTable l WHERE (conditions for where clause)
进一步阅读


看看TABLOCK或TABLOCKX@RichBenner你能提供它的语法吗。我试着在谷歌上搜索,但没能得到什么结果。我把代码放在下面的答案中,tablockx被归类为表提示。我还增加了进一步的阅读。看看TABLOCK或TABLOCKX@RichBenner你能提供它的语法吗。我试着在谷歌上搜索,但没能得到什么结果。我把代码放在下面的答案中,tablockx被归类为表提示。我还添加了进一步的阅读。表提示在表名后面,而不是列规范后面。@RichBenner感谢您的帮助。这让我很开心,因为我从5天以来一直被一个问题困扰着。@ShardaPrasadJaiswal很高兴听到你的问题解决了。如果这个答案对您有好处,请随意投票并标记为已接受的答案。@RichBenner您能帮助我在Oracle中进行相同的查询吗?很难找到相同的查询,在独占模式下使用锁表A;插入到(SETID,ACCTID,UPDATEDTM)中,从AccountTable l WHERE(WHERE子句的条件)中选择SETID,l.ACCTID,getdate(),通过发布一个新问题并用oracle标记它,您将获得最佳答案。恐怕我是SQL Server的家伙。表提示在表名后面,而不是列规范后面。@RichBenner感谢您的帮助。这让我很开心,因为我从5天以来一直被一个问题困扰着。@ShardaPrasadJaiswal很高兴听到你的问题解决了。如果这个答案对您有好处,请随意投票并标记为已接受的答案。@RichBenner您能帮助我在Oracle中进行相同的查询吗?很难找到相同的查询,在独占模式下使用锁表A;插入到(SETID,ACCTID,UPDATEDTM)中,从AccountTable l WHERE(WHERE子句的条件)中选择SETID,l.ACCTID,getdate(),通过发布一个新问题并用oracle标记它,您将获得最佳答案。恐怕我是个SQL Server的家伙。