Если у меня есть следующий блок SQL (в SQL SERVER 2008 R2):
BEGIN
BEGIN TRAN
DELETE FROM dbo.fooData
WHERE LastUpdate < DateAdd(hour, -1,GETUTCDATE())
COMMIT
BEGIN TRAN
DELETE FROM dbo.barData
WHERE SessionID NOT IN (SELECT sub.SessionId FROM dbo.fooData sub)
COMMIT
RETURN 0
END
Я предполагаю, что мне нужно сделать явный COMMIT между операторами, чтобы удалить данные из fooData впоявиться во втором удалении.Это правильно?В идеале я хотел бы, чтобы все это было в одной транзакции.Пример:
BEGIN
BEGIN TRAN
DELETE FROM dbo.fooData
WHERE LastUpdate < DateAdd(hour, -1,GETUTCDATE())
DELETE FROM dbo.barData
WHERE SessionID NOT IN (SELECT sub.SessionId FROM dbo.fooData sub)
COMMIT
RETURN 0
END
Боюсь, что второе утверждение не будет забирать удаленные данные первого.Обратите внимание, что возврат есть, потому что это часть хранимой процедуры.Я не заинтересован в каскадном удалении или присоединении, я несколько ограничен этим методом.