2
標識符上有一對一關聯的表。我需要刪除符合條件的A.ID = B.ID = C.ID刪除多個相關表中的行
現在我這樣做以下列方式三個表中的所有記錄:
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;
大量的數據這種方式需要很長的時間。有什麼方法可以更快地刪除?
爲什麼不將ID值放入臨時表中,然後從連接中的每個表中刪除到臨時表? – 2012-10-30 05:32:18
如果你在這些表上有'外鍵',你可以添加'ON DELETE CASCADE' –