我有一個按鈕來刪除一個客戶。如果客戶被刪除,則只能從客戶表中刪除。但是我有客戶在付款(所有付款記錄被添加)和評論(所有用戶評論被添加)等表格中的記錄。如何刪除表中的一行時刪除所有相關的表記錄?
我在所有表中都有客戶ID作爲外鍵。但其字段名稱不同。例如在customer_details表中,我有名稱爲id的客戶id,以及其他表中的lead_id。
我應該寫什麼樣的查詢以從所有三個(客戶,評論,付款)表中刪除客戶的記錄?
我有一個按鈕來刪除一個客戶。如果客戶被刪除,則只能從客戶表中刪除。但是我有客戶在付款(所有付款記錄被添加)和評論(所有用戶評論被添加)等表格中的記錄。如何刪除表中的一行時刪除所有相關的表記錄?
我在所有表中都有客戶ID作爲外鍵。但其字段名稱不同。例如在customer_details表中,我有名稱爲id的客戶id,以及其他表中的lead_id。
我應該寫什麼樣的查詢以從所有三個(客戶,評論,付款)表中刪除客戶的記錄?
你應該使用外鍵
的級聯特性例如
FOREIGN KEY (customer_id) REFERENCES customer(id)
ON DELETE CASCADE
這將是更好地刪除其他表中第一,然後在最後一個從客戶表中刪除。但是你可以從所有的表一次刪除,使用的查詢是這樣的:
DELETE FROM tbl_name1 , tbl_name2 ... USING table_references [WHERE where_condition]
希望它可以幫助
+1你爲每個表做到這一點,對不對? –
有沒有辦法在mysql中查詢「系統」模式,並使用它查找哪些密鑰cascasdes鏈接到基礎的基表。基本上使用必須存在於所有級聯的系統信息的「逆向工程」?我曾經用Oracle做過這樣的事情。 –
@Michael Durrant,我的想法與你在這裏的評論以及你對我的評論大致相同。在這裏你去:http://stackoverflow.com/questions/806989/mysql-how-to-i-find-all-tables-that-have-foreign-keys-that-reference-particular – abelito