0

我有一个流式摄取到我的暂存表中。每 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

知道如何明确地说我想锁定临时表以进行插入,直到我截断它?

4

1 回答 1

0

您可以像这样在事务块中执行这些脚本;

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

另一笔交易将等待完成您的交易块。你应该创建 try/catch 块来处理错误。如果脚本鼓励错误,您应该ROLLBACK TRANSACTION在 catch 块中。因为如果一个事务正在启动,它必须以COMMITROLLBACK完成。您不希望该事务被挂起。

于 2017-11-21T11:10:02.140 回答