如何从具有多个外键的多个表中删除行?

时间:2019-05-23 12:13:16

标签: sql key multiple-columns sql-delete foreign

我有4个不同的表,我希望用户使用klantid删除4个不同表中的一行。 这是我的桌子

  1. Customer具有customeridname
  2. Customercard具有Cardidcustomerid(FK)
  3. booking具有bookingidcustomerid

4。bookingroom具有bookingid

我可以从3张桌子中删除,并在其中填入“ customerid”,但我还必须删除预订房间中的行/行。如何删除我的数据库?

我已经搜索了stackoverflow,但是所有答案都是针对单个FK的,这会影响更多表。我有2个不同的FK'''(Customerid and Bookingid)'''

1 个答案:

答案 0 :(得分:0)

您必须选择客户的bookingIds。我不确切知道您的问题,但似乎您只想删除这4个分配了客户的表中的所有内容。

因此,您的客户编号= XXX:

DELETE FROM bookingroom WHERE bockingid IN (SELECT b.id FROM booking b WHERE customerid = XXX);

此后,您可以使用WHERE customerId = XXX

从其他3个表中删除

编辑: 如果要删除客户,则必须至少删除引用该客户的所有行。即Customercardbooking

如果您还想删除所有预订的预订房间,则引用该客户,您可以使用上面的语句。

然后,您可以删除客户的预订:

DELETE FROM booking WHERE customerid = XXX;

删除客户的客户卡:

DELETE FROM Customercard where customerid = XXX;

然后,您可以删除客户(如果未由其他表分配该客户):

DELETE FROM Customer WHERE customerid = XXX;