SQL Server:在整个存储过程中锁定表

时间:2017-11-21 11:03:33

标签: sql-server stored-procedures table-lock

我有一个流式摄取到我的临时表中。每隔5分钟,我执行一个存储过程,将此临时表中的所有数据插入/更新到我的final表中。

存储过程的过程:

BEGIN
 - UPDATE RECORDS IN FINAL TABLE FROM STAGING TABLE
 - INSERT RECORDS IN FINAL TABLE FROM STAGING TABLE
 - TRUNCATE STAGING TABLE
HERE I WANT TO RELEASE THE LOCK
END

任何想法我怎么能明确地说我想锁定插入的临时表,直到我截断它?

1 个答案:

答案 0 :(得分:0)

您可以在事务块中执行这些脚本,如下所示;

writeFileSync

另一个交易将等待完成您的交易冻结。你应该创建try / catch块来处理错误。如果脚本鼓励出错,则应该在catch块中BEGIN BEGIN TRANSACTION - UPDATE RECORDS IN FINAL TABLE FROM STAGING TABLE - INSERT RECORDS IN FINAL TABLE FROM STAGING TABLE - TRUNCATE STAGING TABLE COMMIT TRANSACTION HERE I WANT TO RELEASE THE LOCK END 。因为如果正在启动事务,它必须以 COMMIT ROLLBACK 结束。您不希望该交易被挂起。