我有两个MySQL表:
programs versions
--------- ------------------------
id | name id | program_id | data
---+----- ---+------------+-------
1 | One 1 | 1 | OneFoo
2 | Two 2 | 1 | OneBar
3 | 2 | TwoBaz
versions.program_id
是外键。删除版本时,我还想删除关联的程序,仅当要删除的版本是具有该program_id的最后一个版本时。例如,删除版本1不应删除任何程序,但删除版本3也应删除程序2。
我这样做是有效的:
DELETE FROM versions WHERE id = ?;
DELETE p FROM programs p
WHERE p.id = ?
AND NOT EXISTS (
SELECT 1 FROM versions v WHERE v.programId = p.id
);
只用一个查询就能有更有效的方法吗?或者使用触发器?
答案 0 :(得分:4)
使用触发器:
<items>
<item>
<name>A</name>
</item>
<item>
<!--SPECIAL-->
<name>B</name>
</item>
<item>
<name>C</name>
</item>
</items>