任何人都可以建议一种更干净的方法来删除一个查询中具有一对多关系的行吗?
这可行,但我对 using
子句或 delete
不太熟悉,所以我不完全理解它是如何工作的。
DELETE FROM ip_record,
entry using ip_record
inner join entry
where ip_record.site_id = ?
and ip_record.ip = ?
and ip_record.id = entry.ip_id
我有一个想法,这可以通过级联更干净地完成,但我对约束有一种非理性的恐惧。数据库是MySQL。
最佳答案
是的,添加约束如下
ALTER TABLE entry
ADD CONSTRAINT constr_entry_fk_ip
FOREIGN KEY fk_ip (ip_id) REFERENCES ip_record (id)
ON DELETE CASCADE ON UPDATE CASCADE
然后你就可以使用
DELETE FROM ip_record
WHERE ip_record.site_id=? and ip_record.ip=?
执行之前需要加入的操作。
关于mysql - 如何重构这个多表删除语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3151961/