MySQL Trigger - ВСТАВИТЬ при условии ОБНОВЛЕНИЯ - PullRequest
1 голос
/ 19 мая 2011

Я пытаюсь найти наиболее эффективный способ вставки данных в другую таблицу, когда конкретное поле обновляется в таблице триггеров. ВСТАВКА должна появляться только при обновлении определенного типа.

Таблица, для которой я хочу создать триггер, называется incremental . Таблица, в которую я вставляю, называется crm_record

В инкрементах есть поле с именем status. По умолчанию, когда запись первоначально добавляется в таблицу, поле состояния устанавливается в новое. После обработки биллинга это значение изменяется на обработанное. Поэтому, как только это произойдет, я хочу вставить в crm_record, только если значение другого поля (успех) установлено в 1.

Я рассмотрел вопрос об использовании CASE и IF, но хотел бы получить мнение эксперта о наилучшем способе сделать это.

Ответы [ 2 ]

1 голос
/ 19 мая 2011

Хорошо, в конце концов я пошел с этим, который, казалось, работал.Спасибо, что указал мне правильное направление

CREATE TRIGGER `incremental5_after_ins_tr_crmm` AFTER UPDATE ON `incremental5`
FOR EACH ROW
BEGIN
IF Status = 'processed' AND Success = 1 THEN
INSERT INTO crm_master (msisdn,source,contract_type,revenue) VALUE    (new.msisdn,'INC5',new.contract_type,revenue=revenue+2.5)
ON DUPLICATE KEY UPDATE contract_type=new.contract_type,revenue=revenue+2.5;
END IF;
END;
0 голосов
/ 19 мая 2011

Все, что вам нужно сделать, это создать триггер AFTER UPDATE и протестировать значения status и success вместе. Если это будет только одно состояние, которое вы тестируете, тогда оператор IF будет самым простым способом сделать это.

Однако перед реализацией триггера всегда стоит вернуться к шагу и проверить, действительно ли строка в crm_record не вставляется через кодовую логику при обновлении столбцов status и success.

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