Я использую Mysql сервер. У меня есть таблица с заказами (app_product_orders) и таблица, в которую я добавляю состояния для заказов с комментариями (app_product_order_states_details).
В моей таблице app_product_orders у меня есть одна линия для каждого цвета.
Иногда комментарий может быть для одного цвета или для нескольких цветов (это не только комментарии, в данном случае это установка даты доставки)
Я пытаюсь создать триггер, например, «если all_colors = 1, затем вставьте одну строку для каждой строки в этом порядке с тем же именем продукта и свяжите его с его заказом», чтобы комментарий дублировался в каждой строке.
CREATE TRIGGER insert_app_product_order_states_details_date
AFTER INSERT ON app_product_order_states_details
FOR EACH ROW
BEGIN
IF (NEW.all_colors = 1 AND NEW.new_delivery_date is not null) THEN
INSERT INTO app_product_order_states_details
SELECT
concat(
substring('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghaijklmnopqrstuvwxyz', rand()*(53-0)+0, 1),
substring('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghaijklmnopqrstuvwxyz', rand()*(53-0)+0, 1),
substring('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghaijklmnopqrstuvwxyz', rand()*(53-0)+0, 1),
substring('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghaijklmnopqrstuvwxyz', rand()*(53-0)+0, 1),
substring('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghaijklmnopqrstuvwxyz', rand()*(53-0)+0, 1),
substring('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghaijklmnopqrstuvwxyz', rand()*(53-0)+0, 1),
substring('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghaijklmnopqrstuvwxyz', rand()*(53-0)+0, 1),
substring('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghaijklmnopqrstuvwxyz', rand()*(53-0)+0, 1)
),
X.as_id_product_order,
NEW.as_id_state,
NEW.action,
NEW.validate,
NEW.comment,
NEW.timestamp,
NEW.as_id_factory,
NEW.jiagongfei_factory,
NEW.S,
NEW.M,
NEW.L,
NEW.XL,
NEW.SM,
NEW.ML,
NEW.TU,
NEW.cost_price_pre_prod,
NEW.jiagongfei_bangfang,
NEW.jiagongfei_manager,
NEW.jiagongfei_patricia,
NEW.product_name,
NEW.order_number,
0,
NEW.new_delivery_date
FROM app_product_orders X
WHERE X.product_name = NEW.product_name
AND X.order_number = NEW.order_number
AND X.as_id_product_order != NEW.as_id_product_order;
END IF;
Этот триггер не работает, в сообщении говорится, что он не может вставить строки в одну таблицу.
Я новичок в SQL, поэтому мне интересно, есть ли другой способ достичь моей цели, используя другой метод?
Большое спасибо!