2

谁能建议一种更简洁的方法来删除一个查询中具有一对多关系的行?

这可行,但我对using子句 or不是很熟悉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。

4

1 回答 1

4

是的,添加约束如下

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=?

做以前需要加入的事情。

于 2010-06-30T17:59:02.813 回答