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' –