簡體   English   中英

MySQL從3個表中刪除

[英]MySQL delete from 3 tables

我有下表,這些鍵在數據庫中:

預訂 session_id

會話 session_id course_id

課程 course_id

我想創建一個查詢以刪除與單個課程(course_id)有關的所有日期。 例如,如果我想刪除course_id = 10,則我希望刪除Course_id = 10的所有會話,此外,與這些會話中的任何一個相關的預訂也需要刪除。

這可能嗎? 最好的解決方法是什么? (我正在用PHP編寫。)

任何幫助,不勝感激!

MySQL支持多表刪除

DELETE FROM BOOKINGS 
 USING BOOKINGS JOIN SESSIONS JOIN COURSES
 WHERE BOOKINGS.session_id = SESSIONS.session_id
   AND SESSIONS.course_id = COURSES.course_id
   AND COURSES.course_id = ?

另一種選擇是使用存儲過程 ,並按正確的順序處理刪除操作:

  1. 預訂

     DELETE FROM BOOKINGS WHERE EXISTS(SELECT NULL FROM SESSIONS s WHERE s.session_id = session_id AND s.course_id = ?) 
  2. 會議

     DELETE FROM SESSIONS WHERE EXISTS(SELECT NULL FROM COURSES c WHERE c.course_id = course_id AND c.course_id = ?) 
  3. 課程

     DELETE FROM COURSES WHERE course_id = ? 

我認為最好的方法是配置表以添加適當的外鍵(您必須為此使用InnoDB才能在mysql中實際工作)並將FK的行為設置為“ ON DELETE CASCADE”。 這樣,當您從課程表中刪除某些內容時,相關的預訂和會話將被自動刪除。

一些鏈接:

暫無
暫無

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

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