2015-12-08 71 views
0

我有如下所示的兩個表:如何使用一個查詢跨多個表進行刪除?

表1: 發票

表2: invoice_details

public function deleteInvoice($id='') 
    { 
     if(!empty($id)){ 
      $query = "DELETE FROM invoices where uuid ='$id'"; 
      if(mysqli_query($this->_con, $query))return true; 
      else return false; 
     }else{ 
      return false; 
     } 
    } 

表2包含一個所謂的 「INVOICE_ID」 列,其涉及表1的「id」

每當我使用上述函數刪除發票時,我也想同時刪除invoice_details。有沒有簡單的方法來修改上面的代碼來做到這一點?

回答

2

首先,你需要把一個外鍵約束上invoice_details

ALTER TABLE invoice_details 
    ADD CONSTRAINT fk_invoice 
    FOREIGN KEY(invoice_id) 
    REFERENCES invoices(id) 
    ON DELETE CASCADE; 

然後你就可以刪除你的發票,它會自動刪除細節

+0

非常感謝您! fancyPants忘記將invoice_id放在括號中,因此只通過@fancyPants選擇了您的答案。 – Steven

1

請勿修改代碼。在具有ON DELETE CASCADE選項的表格之間建立外鍵關係。

ALTER TABLE invoice_details ADD CONSTRAINT fk_invoice FOREIGN KEY invoice_id REFERENCES invoices(invoice_id) ON DELETE CASCADE; 

現在數據庫爲您完成這項工作。

相關問題