从两个表中删除行

use*_*153 2 sql oracle

我正在尝试同时从两个不同的表中删除行.表格看起来像这样:

TABLE - Value
-----------
ID
Field
<some other stuff...>

TABLE - Srch
-----------
Value_ID
Srch_ID
<some other stuff...>
Run Code Online (Sandbox Code Playgroud)

我想删除所有来自行VALUE哪里field等于"成功",并删除该行SRCH链接到VALUE通过value_id.在SRCH那里可以有多个相同的行value_id.

这个SQL语句会是什么样的?

Mua*_*lig 5

我建议在你的2个表之间使用外键ON DELETE CASCADE.因此,您只需要删除Value中的行,并删除Srch中的所有相应行.

您可以将以下约束添加到数据库:

ALTER TABLE Srch ADD CONSTRAINT
FK_Value_ID FOREIGN KEY(Value_ID)
REFERENCES Value (ID) 
ON DELETE CASCADE;
Run Code Online (Sandbox Code Playgroud)

为了清楚起见(引自xQbert评论):当删除Value中的ID时,"级联将始终发生".