Я пытаюсь удалить все строки в двух зависимых таблицах на основе третьего идентификатора таблицы.[MySQL]: УДАЛИТЬ строки из двух зависимых таблиц
Структура таблицы:
Transaction
-Transaction_ID (primary)
-Timestamp
Purchase
-Item_ID
-Transaction_ID
-Purchase_ID (primary)
Item
-Item_ID (primary)
-Client_ID
Я хотел бы, чтобы удалить все строки из сделки/покупки, которые соответствуют CLIENT_ID в п. Звучит достаточно просто ... даже я могу обернуть начинающий ум вокруг этого ...
DELETE dbName.t FROM
dbName.Transaction t
JOIN
dbName.Purchase p
ON
p.Transaction_ID = t.Transaction_ID
JOIN
dbName.Item i
ON
p.Item_ID = i.Item_ID
WHERE
Client_ID = 1
Нету ...
Я получаю эту ошибку foreign key constraint fails...
- Я уверен, что многие из вас не удивляет.
Проблема заключается в том, что покупка использует t.Transaction_ID? - (таким образом, этот внешний ключ не сработает)
Возможно, есть другие зависимые от t.Transaction_ID данные в этой таблице (я их не нашел).
EDIT: COMPLETE ERROR
Cannot delete or update a parent row: a foreign key constraint fails
(`ItemTracker_dbo/Purchase`, CONSTRAINT `FK_Purchase_Transaction`
FOREIGN KEY (`Transaction_ID`) REFERENCES `Transaction` (`Transaction_ID`)
ON DELETE NO ACTION ON UPDATE CASCADE)
мне кажется наоборот: транзакция зависит от покупки (поскольку я не могу удалить client_id без нее) –
@Derek Adair: Поскольку @AlbertEin был первым, кто правильно ответил на вопрос, и мой пост нуждался в капитальном ремонте прежде чем это будет полезно, пожалуйста, подумайте о принятии его ответа. – Tomalak
Не смотрите внимательно, у вас есть Transaction_ID внутри вашей таблицы Purchase. Если вы сначала удалили транзакцию, таблица Покупки временно содержала бы недействительный Transaction_ID, которого не было. – MindStalker