我有一些“基本操作”存储过程,比如BookAVehicle
和UnBookAVehicle
. 他们都在交易中。
但是现在我需要一个更复杂的存储过程:RescheduleBooking
. 它还需要是事务性的。
现在,ResceduleBooking
我想从内部调用BookAVehicle
,在这种情况下,我不希望内部事务回滚。
但是当我BookAVehicle
直接调用时,我想保持回滚。
关于如何优雅地做到这一点的任何建议?
我在想一些类似于“包装”存储过程的东西,它作为参数采用存储过程的名称,并且只包含一个事务和对参数存储过程的调用。
因此,当我“直接”调用它时,我会调用:
TransactionWrapper(BookAVehicleWithoutTrans)
当我从另一个事务中调用它时,我调用:
RescheduleBooking -> BookAVehicleWithoutTrans