2016-07-24 4 views
0

Я пытаюсь удалить одну строку из tbl_user и несколько строк из user_subscription_log, мой запрос с соединением является:ошибка базы данных Mysql - удаление записей с помощью присоединения запроса

DELETE tbl_user, user_subscription_log 
FROM tbl_user 
INNER JOIN user_subscription_log ON tbl_user.id = user_subscription_log.user_id 
WHERE tbl_user.id='256' 

Обнаружена ошибка:

# 1451 - Невозможно удалить или обновить родительскую строку: ограничение внешнего ключа не удается (. databasenameuser_subscription_log, скованность foreirgn_key_user_id FOREIGN KEY (user_id) Лит tbl_user (id))

ответ

2

Это неудачно, потому что дочерняя запись существует в таблице user_subscription_log, и условие 'on delete' не установлено в Foreign Key.

Я бы выполнить два УДАЛИТЬ запросы:

DELETE FROM user_subscription_log WHERE user_id = ?; 

DELETE FROM tbl_user where id = ?; 

Другой вариант, чтобы установить «при удалении каскада» в пункте внешнего ключа определения, как объяснено here.

+0

Я бы выбрал «другой вариант», – Strawberry

Смежные вопросы