Вот один из способов, которым вы могли бы заняться этим. Это добавление транзакции, которая вам потребуется для обработки нескольких операторов DML в одном автономном блоке. Затем добавили попытку / перехват, чтобы в случае сбоя любого оператора транзакция рассматривала оба оператора как одну единицу работы.
ALTER Proc [dbo].[DeleteQualityAssemblyProduction]
(
@id int,
@Quantity int,
@idPartShip int,
@FK_idNextProcess int
) AS
set nocount on;
begin transaction
begin try
DELETE FROM [dbo].DailyQualityAssemblyProduction
WHERE id = @id
if @FK_idNextProcess = 11
begin
UPDATE [dbo].[ProjectShipping]
SET QualityAssemblyQty = QualityAssemblyQty - @Quantity
WHERE id = @idPartShip
end
commit transaction
end try
begin catch
rollback transaction
declare @error int
, @message varchar(4000);
select @error = ERROR_NUMBER()
, @message = ERROR_MESSAGE()
raiserror ('DeleteQualityAssemblyProduction: %d: %s', 16, 1, @error, @message) ;
end catch