나는 (SQL Server 2008 R2의) 다음과 같은 SQL 블록이있는 경우 : 난에 표시 할 수 fooData에서 삭제 된 데이터를 위해 문 사이에 COMMIT을 명시 할 필요가 있다고 가정하고SQL "DELETE"문 뒤에 "WHERE NOT IN"문이 오는 것은 같은 트랜잭션에있을 수 있습니까?
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
두 번째 삭제. 이 올바른지? 이상적으로는이 모든 것이 하나의 트랜잭션에 포함되기를 바랍니다. 예 :
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
내 생각에 두 번째 문장은 첫 번째 삭제 된 데이터를 선택하지 않습니다. 이것은 스토어드 프로 시저의 일부이기 때문에 반환됩니다. 계단식 삭제 또는 가입에 관심이 없습니다.이 방법에 어느 정도 제한됩니다.
빠른 응답 주셔서 감사합니다. 곧 테스트 할 것입니다. – Brian