[英]How do I delete row with primary key using foreign key from other table?
我有一張叫“議程”的表//翻譯:乳制品
具有以下行:
idagenda // primary key
title
waar
organisatie
...
etc.
...
我還有一張表,用於記錄日記項目/事件的日期,稱為議程
具有以下行:
id // primary key
idagenda // id from other table
van //from
tot // till
datum // date
當“ tot”字段是“今天”的日期時,它將刪除數據庫中的行,但“議程”表中的行保持不變。 他們沒有被刪除,因為我沒有給他們打電話。
我的刪除查詢如下所示:
DELETE FROM agendadatum WHERE tot < NOW();
如何從“議程”表中刪除具有相同ID的行,然后刪除議程表中的外鍵?
在創建表中,您需要提及外鍵約束,例如
FOREIGN KEY (product_id) REFERENCES products (id)
ON DELETE CASCADE
ON UPDATE CASCADE,
之后,如果您運行delete查詢,則將自動刪除引用表ID的行。
您可以查看級聯刪除中的說明
如果您使用的是php,則可以嘗試以下操作
//get all agentadatum data with date now and before
$select_agendadatum = mysql_query("SELECT * FROM agendadatum WHERE tot <= NOW()") or die (mysql_error());
//loop through rows
while($row_agendadatum = mysql_fetch_assoc($select_agendadatum))
{
//delete agendadatum row
$delete_agendadatum = mysql_query("DELETE FROM agendadatum WHERE id = '".$row_agendadatum['id']."'") or die (mysql_error());
//delete agenda row
$delete_agenda= mysql_query("DELETE FROM agenda WHERE idagenda = '".$row_agendadatum['idagenda']."'") or die (mysql_error());
}
如果您的邏輯上每個agenta接受一個以上的議事日程,則可以在刪除該agenta之前簡單地計算一個特定agenta中是否有超過1個議事日程...
希望這可以幫助
您可以在一個查詢中從多個表中刪除:
DELETE agenda.*, agendadatum.*
FROM agenda
JOIN agendadatum USING (idagenda)
WHERE tot < NOW();
這將從議程和議程基准中刪除所有行,並且僅刪除那些與條件匹配的行(如果將DELETE
替換為SELECT
則返回與查詢相同的行)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.