【问题标题】:Delete from 2 tables one-to-many relation从 2 个表中删除一对多关系
【发布时间】:2025-12-04 10:45:01
【问题描述】:

我有 3 个表格:文章:

id title content date

标签:

id  name

tags_in_news:

id  news_id  tag_id

news_id 是文章表的外键,tag_id 是标签表的外键...如何删除文章? 我试过但没有收到,我的代码:

$aid=(int)$this->uri->segment(3,0);
 $this->db->query("DELETE * FROM articles, tags_in_news WHERE articles.id = $aid AND tags_in_news.news_id = $aid ");

请帮帮我;)

【问题讨论】:

    标签: mysql codeigniter codeigniter-2


    【解决方案1】:

    试试这个:

    DELETE a, tn 
    FROM articles a INNER JOIN 
         tags_in_news  tn
    WHERE a.id=tn.news_id 
        AND a.id = $aid 
        AND tn.news_id = $aid 
    

    另一种选择:

    您可以使用ON DELETE CASCADE 在表上定义外键约束。

    然后从父表中删除记录会从子表中删除记录。阅读更多here

    信用:SO answer.

    【讨论】:

    • 我定义 ON DELETE CASCADE
    【解决方案2】:

    您可以使用ON DELETE CASCADE 选项在表上定义外键约束。

    然后从父表中删除记录会从子表中删除记录。

    DELETE articles a ,tags_in_news t FROM articles INNER JOIN tags_in_news  WHERE a.id = t.id AND a.id = $aid
    

    参考:Mysql - delete from multiple tables with one query

    【讨论】: