**** Запрос ***************************** У меня есть одна хранимая процедура, которая получила одно обновление и одну вставкузапрос.Обновление происходит, скажем, в Table1, а вставка происходит, скажем, в Table2.Я не хочу выполнять обновление, если запрос вставки завершается неудачно по какой-либо причине и наоборот.Пожалуйста, скажите мне, как реализовать это. Я понимаю, что мне, возможно, придется использовать try catch и begin и end trans и rollback, но я не могу понять, как это реализовать.
Только что исследовал, какнапиши Попробуй и поймай и начни тран и заканчивай.
**************** Хранимая процедура *******************************************
INSERT INTO @TempVariable(DUNS_Request_ID ,DUNS_Transaction_ID,DUNS_Status_ID)
SELECT T1.DUNS_Request_ID,T2.DUNS_Transaction_ID,DUNS_Status_ID
FROM DUNS_Request_Master T1
LEFT JOIN DUNS_Transactions T2 ON T1.DUNS_Request_ID=T2.DUNS_Request_ID
WHERE T1.DUNS_Request_ID IN
(SELECT DUNS_Request_ID FROM DUNS_Transactions WHERE DUNS_Status_ID = 2)
AND CONVERT(DATE,RequestedDate) <= DATEADD(DAY, -1,CONVERT(DATE,GETDATE()))
UPDATE DUNS_Transactions
SET
AssignedToUser_ID = @ContentUserID
,DUNS_Status_ID = @FreeDUNSStatusID
,DUNS_Transaction_Update_Status = 'Automatic Conversion to Free DUNS'
,ProcessedDateTime = GETDATE()
WHERE DUNS_Request_ID IN (SELECT DUNS_Request_ID FROM @TempVariable)
INSERT INTO [DUNS_Transaction_Details]
(
DUNS_Request_ID,
DUNS_Transaction_ID,
DUNS_Status_ID,
AssignedToUser_ID,
AssignedByUser_ID,
Comments,
CommentsBy,
CommentDate,
ProcessedDateTime,
IsActive
)
SELECT DUNS_Request_ID,
DUNS_Transaction_ID,
@FreeDUNSStatusID,
@ContentUserID,
NULL,
'Automatic Conversion to Free DUNS',
NULL,
GETDATE(),
GETDATE(),
1
FROM @TempVariable