Синхронизация полей в таблице с помощью TRIGGER

Тема в разделе "Базы данных", создана пользователем ranaza12, 8 апр 2015.

Статус темы:
Закрыта.
Модераторы: latteo
  1. ranaza12

    ranaza12 Создатель

    Регистр.:
    11 июл 2012
    Сообщения:
    8
    Симпатии:
    2
    Никак не могу составить правильно TRIGGER.
    Суть в чем, есть Таблица: event_r1 ; В ней нужно синхронизировать поля: Values и Reverse.
    Т.е когда меняется значение в Values, тогда в Reverse поле автоматически изменяется на значения с поля Values.

    Дальше чем "CREATE TRIGGER trigger_event_r1 BEFORE UPDATE ON" не получалось заходить.
     
    Последнее редактирование: 8 апр 2015
  2. lazarevmax

    lazarevmax Создатель

    Регистр.:
    9 июн 2012
    Сообщения:
    18
    Симпатии:
    0
    идентификация по primary key `id`?

    Код:
    CREATE TRIGGER `event_r1_trigger_sync` AFTER UPDATE ON `event_r1` FOR EACH ROW
    BEGIN
    
    IF(NEW.`Values` != OLD.`Values`) THEN
      REPLACE `event_r1` SET `Reverse`=NEW.`Values` WHERE `id`=NEW.`id`;
    ENDIF;
    
    END;
    так было сделано на одном моем проекте, переписал под ваши нужды
     
  3. newminer

    newminer Создатель

    Регистр.:
    21 апр 2015
    Сообщения:
    13
    Симпатии:
    4
    Содержимое триггера должно быть таким (включать в себя проверку на изменение нулл, иначе этого изменения не заметит:
    if ((new.values!=old.values) or (new.values is null and old.values is not null)or(new.values is not null and old.values is null))then
    replace 'event_r1' set 'reverce'=old.values where 'id'=new.id;
    end if;
    Выделил фрагмент изменения -как я понял, в поле реверс надо записывать старое значение?
     
Статус темы:
Закрыта.