gpt4 book ai didi

sql-server - 如何防止特定的 INSERT 语句在事务中回滚

转载 作者:行者123 更新时间:2023-12-03 12:45:56 25 4
gpt4 key购买 nike

我有一个非常大的 SP 并且我有一个交易。我在 SP 中运行算法,如果算法不成功,事务将回滚。

即使事务回滚,我也需要记录一些数据,但是当事务回滚时,它也会回滚日志。这是正常行为,但我需要从回滚中排除该日志插入语句,以便仍记录事务。

我有一个名为 #MissingAllocationLines 的临时表,然后我将日志插入到该表中。然后如果它回滚,我需要插入来自 #MissingAllocationLines 的所有行进实表DLWMS_ALLOCATIONMISSINGLOG
那可能吗?我的示例代码如下

create table #MissingAllocationLines
(ALLOCATIONJOBID BIGINT,
ORDERID BIGINT,
ORDERDETAILID BIGINT,
ITEMID BIGINT,
STOCKQUANTITY BIGINT,
ORDERQUANTITY BIGINT)


BEGIN TRANSACTION

WHILE(.....)
BEGIN
INSERT INTO #MissingAllocationLines (ALLOCATIONJOBID,ORDERID,ORDERDETAILID,ITEMID,STOCKQUANTITY,ORDERQUANTITY)
VALUES (@ALLOCATIONJOBID,@OrderID,@OrderDetailID,@ItemID,ISNULL(@StockFreeQuantity, 0),ISNULL(@RemainingQuantity,0))
...
...
...
END

IF(@DONE=1)
BEGIN
COMMIT TRANSACTION
END
ELSE
BEGIN
ROLLBACK TRANSCATION

INSERT INTO DLWMS_ALLOCATIONMISSINGLOG (ALLOCATIONJOBID,ORDERID,ORDERDETAILID,ITEMID,STOCKQUANTITY,ORDERQUANTITY)
SELECT ALLOCATIONJOBID,ORDERID,ORDERDETAILID,ITEMID,STOCKQUANTITY,ORDERQUANTITY
FROM #MissingAllocationLines
END

最佳答案

关于sql-server - 如何防止特定的 INSERT 语句在事务中回滚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39018418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com