【发布时间】:2021-06-15 14:50:27
【问题描述】:
| Table1 | Table2 | Table3 |
|---|---|---|
| Req_id | Req_id | env_id=1 |
| env_id(FK) | env_id=2 |
忽略其他字段...表 2 中的每个 req_id 都有一个 env_id,它从表 3 中获取这个 env_id。
如果表 2 中的 req_id 在表 3 中包含每个 env_id 的记录,我想从表 1 中删除该 req_id。
由于表 3 中的 env_id 在我将运行此脚本的每个环境中都会有所不同。因此,删除脚本需要动态编写。 感谢您的帮助。
BEGIN
FOR a
IN (SELECT ENV_ID FROM Table3 t3)
LOOP
BEGIN
DELETE FROM Table1 t1 WHERE t1.ID IN
(SELECT t1.ID FROM Table1 t1
INNER JOIN Table2 t2 ON t2.REQ_ID = t1.REQ_ID
INNER JOIN Table3 t3 ON t3.ENV_ID = t2.ENV_ID
AND t2.ENV_ID=a.ENV_ID)
END;
END LOOP;
COMMIT;
END;
【问题讨论】:
-
您对此有何疑问?您使用的是哪个 RDBMS?
-
这是否回答了您的问题? mysqltutorial.org/mysql-on-delete-cascade
-
我使用 Oracle。
-
签出 ON DELETE CASCADE 外键。
-
不,我想从 table2 中删除记录。