2
식별자에 일대일로 관련된 세 개의 테이블이 있습니다. 데이터의여러 관련 테이블에서 행 삭제
DECLARE
CURSOR CUR IS
SELECT C.ID FROM A
INNER JOIN B ON A."ID" = B."ID"
INNER JOIN C ON B."ID" = C."ID"
WHERE A.STATUS = 'ERROR';
IDX NUMBER;
BEGIN
FOR REC IN CUR LOOP
IDX := REC.ID;
DELETE FROM C WHERE C."ID" = IDX;
DELETE FROM B WHERE B."ID" = IDX;
DELETE FROM A WHERE BP."ID" = IDX;
END LOOP;
COMMIT;
END;
많은 : 나는 A.ID = B.ID = C.ID
지금은 다음과 같은 방법으로 그것을 할 기준과 일치하는 세 개의 테이블의 모든 레코드를 삭제해야 매우 긴 실행을위한이 방법. 더 빨리 삭제할 수있는 방법이 있습니까?
왜 임시 테이블에 ID 값을 넣은 다음 임시 테이블에 대한 조인의 각 테이블에서 삭제하지 않습니까? –
테이블에 'Foreign Keys'가 있다면'ON DELETE CASCADE'를 추가 할 수 있습니다. –