У меня есть хранимая процедура, которая используется при вставке новой транзакции. Эта процедура правильно вставляется в таблицу транзакций, но мне также нужно обновить другую связанную таблицу на основе вставленных значений.
На основе Product_ID мне нужно обновить PT_Pct_to_Salon в таблице с именем «Salon», указав значение из таблицы с именем «Zen_Products_Description». Соответствующий салон можно найти с помощью идентификатора Salon_ID из вставки, который эквивалентен идентификатору PK таблицы Salon.
Значение, которое мне нужно вставить, находится в поле «web_share» таблицы «Zen_Products_Description». Связанная строка в «Zen_Products_Description» может быть сопоставлена путем сопоставления вставленного значения «Product_ID» с PK «Zen_Products_Description», который называется «products_id».
Я использую MySQL 5.
BEGIN
INSERT INTO Transactions
(Cart_Trans_ID, Customer_ID, Pass_Through_Amt, Product_ID, Product_Name, Product_Qty, Salon_ID, Stylist_ID, Trans_Type, customerAddress, customerCity, customerEmail, customerFirstName, customerLastName, customerPhone, customerPostal, customerState)
VALUES (Cart_Trans_ID, Customer_ID, Pass_Through_Amt, Product_ID, Product_Name, Product_Qty, Salon_ID, Stylist_ID, Trans_Type, customerAddress, customerCity, customerEmail, customerFirstName, customerLastName, customerPhone, customerPostal, customerState);
Insert Into Zen_Products_Description
(products_id, products_name)
Values (Product_ID, Product_Name) ON DUPLICATE KEY UPDATE
products_name = Product_Name;
//this is where I try unsuccessfully to update
update Salon
set PT_Pct_to_Salon = Zen_Products_Description.web_share
join Salon
on Salon.Salon_ID = Transactions.Salon_ID
join Zen_Products_Description
on Zen_Products_Description.products_id = Transactions.Product_ID;
END