我有两个表如下所示:
表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"的列。这与" id"表1
每当我使用上述功能删除发票时,我也想同时删除invoice_details。有没有一种简单的方法来修改上面的代码来做到这一点?
答案 0 :(得分:2)
首先,您需要在invoice_details
上设置外键约束ALTER TABLE invoice_details
ADD CONSTRAINT fk_invoice
FOREIGN KEY(invoice_id)
REFERENCES invoices(id)
ON DELETE CASCADE;
然后您可以删除发票,它会自动删除详细信息
答案 1 :(得分:1)
不要修改代码。使用ON DELETE CASCADE
选项在表之间建立外键关系。
ALTER TABLE invoice_details ADD CONSTRAINT fk_invoice FOREIGN KEY invoice_id REFERENCES invoices(invoice_id) ON DELETE CASCADE;
现在数据库为您完成了这项工作。
答案 2 :(得分:0)
您可以使用外键约束来执行此操作,强制删除CASCADE。有关其他详细信息,请参阅https://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html。