문제

한 두 가지가 아닌이라는 테이블이 회사는 DepartmentID 열입니다.또한 Departaments 가 있는 테이블로 EmployeeID 열입니다.물론 내가는 직원이 있습니다.문제는 나를 삭제하려는 회사,그래서 먼저 나를 삭제하는 모든 직원들에 대한 모든 departament 그리고 모든 departaments 에는 회사입니다.캐스케이드를 삭제하지 않는 옵션이므로 내가 사용하고자하는 중첩된 트랜잭션이 있습니다.나는 새로운 SQL 그래서 나는 당신의 도움을 주셔서 감사합니다.

도움이 되었습니까?

해결책

나는 확실하지 않다 왜 당신은 필요한 중첩된 거래를 여기에.당신이 하나만 필요한 실제 트랜잭션:

BEGIN TRAN

DELETE FROM Employee
    FROM Employee
    INNER JOIN Department ON Employee.DepartmentID = Department.DepartmentID
    INNER JOIN Company ON Department.CompanyID = Company.CompanyID
    WHERE Company.CompanyID = @CompanyID

DELETE FROM Department
    FROM Department
    INNER JOIN Company ON Department.CompanyID = Company.CompanyID
    WHERE Company.CompanyID = @CompanyID

DELETE FROM Company
    WHERE Company.CompanyID = @CompanyID

COMMIT TRAN

주중에는 오타,올바른 SQL 구문을 수행하에 참여 삭제합니다.

각각의 문은 원자,또는 전체를 삭제할 것이 성공하거나 실패는 없는 중요하므로 이러한 상황에서는 전체를 배치나 성공이나 실패합니다.

BTW-내 생각에 당신은 당신의 관계를 뒤.부서지 않을 것이다 EmployeeID,원가 DepartmentID.

다른 팁

나는 당신의 질문에 대답하지만,외국 열쇠 이동하는 방법,그것은 왜 옵션이 아닙?

로에 대한 중첩된 거래에 그들은:

BEGIN
  delete from Employee where departmentId = 1;
  BEGIN
     delete from Department where companyId = 2;
     BEGIN
        delete from Company where companyId = 2;
     END
  END
END

프로그래밍 방식으로 그것이 다른 모습은 물론이지만,그에 따라 달라집 플랫폼을 사용하는

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top