[英]How to delete all related records from different MySQL tables
我的數據庫中有兩個表:' 故事 '和' 投票 '。
故事表包含有關文章的所有信息(例如標題,正文,作者姓名等)。 投票表包含所有文章的所有投票。 投票中有一個名為item_name的字段,其中包含投票的文章的ID 。
簡單來說, 投票中的 item_name等於故事中的 id (取決於用戶投票的文章)。
問題是:如果文章被刪除,我該如何自動刪除投票表中與該文章相關的所有記錄?
它可以在數據庫中設置,因此不需要設置其他PHP查詢嗎?
這是我的數據庫結構:
故事
票
MySQL有不同的存儲引擎。 在大多數MySQL管理IDE中,默認存儲引擎是MyISAM
。 如果對表使用此存儲引擎,則無法在列之間創建任何關系,並且必須自行刪除相關列。
對於你想要的, innoDB
是最好的解決方案。 這種類型的存儲引擎使情況在不同表的列之間創建關系。 您將需要表中的主鍵和外鍵,並且在創建這些關系后,您必須為它們指定以下功能:
ON UPDATE CASCADE
和ON DELETE CASCADE
因此,刪除主記錄后,您不需要刪除相關的列值。
看一下這個鏈接 ,在基准測試中對它們進行比較。
在刪除時級聯設置相關字段的外鍵。
也許有人能夠給你一個更詳細的答案,但你必須使用支持外鍵的引擎(如InnoDB),如果你不知道如何手工操作,PHPMyAdmin應該幫助你完成其余的工作。
簡單地說,在字段上的delete上設置級聯告訴您的數據庫刪除具有該約束的每個記錄,在您的情況下,刪除文章(在另一個表上)。
瀏覽此處獲取更多信息:
http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.