У меня есть таблица внешнего ключа, и я пытаюсь объединить повторяющиеся записи.
Моя таблица выглядит следующим образом:
user_id | object_id
Таблица представляет собой уникальный ключ из двух столбцов, поэтомуне может быть дубликатов.
Мой запрос выглядит так:
UPDATE user_object SET object_id = merge_obj_id WHERE object_id = old_object_id
Это работает нормально, пока пользователь не присоединится к старому объекту и объекту merged_object.Что вызывает дубликат.Я застрял, я могу придумать способы сделать это с несколькими запросами и манипулированием объектами, но я действительно хотел бы сделать это в SQL.
ОБНОВЛЕНИЕ: Это может работать?
INSERT INTO user_object (user_id,merge_object_id) SELECT user_id FROM user JOIN
user_object ON user.user_id = user_object.user_id WHERE object_id = old_object_id ON
DUPLICATE KEY (DELETE user_object WHERE user_object.user_id = user_id AND
user_object.user_id = old_object_id);`
ОБНОВЛЕНИЕ: Попробовал это:
ВСТАВИТЬ user_object (user_id, object_id) ВЫБРАТЬ 12345 как object_id, user.user_id как user_id FROMuser JOIN user_object ON user.user_id = user_object.user_id
WHERE user_object.object_id = 23456
Но выдает эту ошибку:
Невозможно добавить или обновить дочернюю строку: внешний ключограничение не выполняется (yourtable
. user_object
, CONSTRAINT FK_user_object_user_idx
ИНОСТРАННЫЙ КЛЮЧ (user_id
) ССЫЛКИ user
(user_id
))