TRIGGER Вставить другие строки в той же таблице после вставки - PullRequest
0 голосов
/ 17 января 2019

Я использую 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, поэтому мне интересно, есть ли другой способ достичь моей цели, используя другой метод?

Большое спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...