Как обновить дочернюю таблицу при обнаружении дубликата в родительской таблице с помощью ОБНОВЛЕНИЯ ДУБЛИКАТА КЛЮЧА

#mysql #sql #stored-procedures

#mysql #sql #хранимые процедуры

Вопрос:

У меня есть таблица продуктов, которая является родительской таблицей Price, поэтому я вставляю данные в обе таблицы одновременно, используя хранимую процедуру, когда я вставляю дублирующуюся запись, я хочу обновить старую запись, используя новую запись в обеих таблицах, но в моем случае она обновляет только таблицу продуктов, а не таблицу продуктов.и я получаю код ошибки: 1062. Дубликат записи ’13-1′ для ключа ‘Цена.ПЕРВИЧНЫЙ’ при обновлении таблицы цен. Мне нужна помощь в решении этой проблемы.

Вот моя хранимая процедура

 BEGIN
declare ProductId int;

select ProductID INTO ProductId from Products
where
Products.ProductName = p_Name and Products.ProductURL = p_Url;

if(ProductId is null ) then
BEGIN
 Insert into Products(ProductName,ProductDescription,ProductURL,ImageURL,Barcode, CategoryID)
 values(p_Name,p_Descr,p_Url,image_url,p_BarCode,p_cat)

 ON DUPLICATE KEY UPDATE
  ProductName = p_Name, ProductDescription=p_Descr, ProductURL=p_Url, ImageURL = image_url, Barcode = 
p_BarCode, CategoryID = p_cat;
 SET ProductId = LAST_INSERT_ID();
END;

END IF;

insert into Price(ProductID,StoreID,SpecialPrice,RegularPrice,FinalPrice,DateUpdated)
values(ProductId,storeid,s_price,r_price,f_price,dateUpated);

END
 

Комментарии:

1. Вы все еще хотите выполнить insert into Price инструкцию, когда продукт был обновлен ?

2. Нет, я не хочу выполнять вставку после обновления