簡體   English   中英

如何從不同的MySQL表中刪除所有相關記錄

[英]How to delete all related records from different MySQL tables

我的數據庫中有兩個表:' 故事 '和' 投票 '。
故事表包含有關文章的所有信息(例如標題,正文,作者姓名等)。 投票表包含所有文章的所有投票。 投票中有一個名為item_name的字段,其中包含投票的文章的ID

簡單來說, 投票中的 item_name等於故事中的 id (取決於用戶投票的文章)。

問題是:如果文章被刪除,我該如何自動刪除投票表中與該文章相關的所有記錄?

它可以在數據庫中設置,因此不需要設置其他PHP查詢嗎?

這是我的數據庫結構:

故事

在此輸入圖像描述


在此輸入圖像描述

MySQL有不同的存儲引擎。 在大多數MySQL管理IDE中,默認存儲引擎是MyISAM 如果對表使用此存儲引擎,則無法在列之間創建任何關系,並且必須自行刪除相關列。

對於你想要的, innoDB是最好的解決方案。 這種類型的存儲引擎使情況在不同表的列之間創建關系。 您將需要表中的主鍵和外鍵,並且在創建這些關系后,您必須為它們指定以下功能:

ON UPDATE CASCADEON DELETE CASCADE

因此,刪除主記錄后,您不需要刪除相關的列值。

看一下這個鏈接 ,在基准測試中對它們進行比較。

在刪除時級聯設置相關字段的外鍵。

也許有人能夠給你一個更詳細的答案,但你必須使用支持外鍵的引擎(如InnoDB),如果你不知道如何手工操作,PHPMyAdmin應該幫助你完成其余的工作。

簡單地說,在字段上的delete上設置級聯告訴您的數據庫刪除具有該約束的每個記錄,在您的情況下,刪除文章(在另一個表上)。

瀏覽此處獲取更多信息:

http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html

http://forums.digitalpoint.com/showthread.php?t=488163

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM