Как я могу удалить строки из нескольких таблиц с несколькими внешними ключами? - PullRequest
0 голосов
/ 23 мая 2019

У меня есть 4 разные таблицы, и я хочу, чтобы пользователь удалил строку в 4 разных таблицах, используя klantid. Это мои столы

  1. Customer с customerid, name.

  2. Customercard с Cardid, customerid(FK)

  3. booking с bookingid, customerid

  4. bookingroom с bookingid

Я могу удалить из 3 таблиц с заполнением «customerid», но я также должен удалить строку / строки в комнате бронирования. Как я могу удалить это для моей базы данных?

Я искал в переполнении стека, но все ответы для одного FK, который влияет на больше таблиц. У меня есть 2 разных FK '' '(Customerid и Bookingid)' ''

1 Ответ

0 голосов
/ 23 мая 2019

Вы должны выбрать идентификаторы бронирования клиента. Я точно не знаю вашу проблему, но кажется, что вы хотите удалить только все из этих 4 таблиц, где назначен клиент.

Итак, у вас есть идентификатор клиента = XXX:

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

После этого вы можете удалить из других 3 таблиц с помощью WHERE customerId = XXX


Edit: Если вы хотите удалить клиента, вы должны как минимум удалить все строки, на которые ссылается клиент. Это Customercard и booking.

Если вы хотите удалить также номера бронирования всех бронирований, на которые ссылается клиент, вы можете воспользоваться приведенным выше заявлением.

Тогда вы можете удалить заказы клиента:

DELETE FROM booking WHERE customerid = XXX;

Удаление клиентских карт клиента:

DELETE FROM Customercard where customerid = XXX;

Затем вы можете удалить клиента (если он не назначен другими таблицами):

DELETE FROM Customer WHERE customerid = XXX;
...