#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. Нет, я не хочу выполнять вставку после обновления