vybgrib
@vybgrib
госслужащий-сисадмин =(

MySql: Триггер или процедура?

Суть такая:
Есть основная таблица `main`. Туда сыпятся записи. Основными полями являются `id`(key),`number` и `code`
Есть таблица `check`. Там находятся записи о некоторых позициях, основные поля так же `id`(key),`number` и `code`.
При добавлении новой записи в `main` необходимо проверить на наличие информации в `check` по двум полям `number` и `code`
и в случае совпадения добавить в третью таблицу `check_alert` записи из следующих полей: `main`.`id` и `check`.`id`, и хлопнуть CURRENT_TIMESTAMP.
Каким образом это можно сделать? Триггер или процедура?
  • Вопрос задан
  • 122 просмотра
Решения вопроса 2
@alexfix
Триггер это та же процедура, которая работает по событию в таблице. Лучше триггер after insert. Хотя если вставка происходит из уже существующей процедуры, можно и из этой процедуры. Разницы нет практически..
Ответ написан
Комментировать
vybgrib
@vybgrib Автор вопроса
госслужащий-сисадмин =(
Ну, в принципе, сам решил и разобрался...
DELIMITER //
CREATE TRIGGER check_alert_trg
AFTER INSERT
            ON main FOR EACH ROW
BEGIN
            DECLARE check_id INT;
            SELECT id INTO check_id from check where check.number=NEW.number and check.code=NEW.code;
            if (check_id is not null) THEN
                    INSERT INTO check_alert VALUES(NEW.id,check_id,CURRENT_TIMESTAMP);
            end IF;
END
//

DELIMITER;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы