Ответы пользователя по тегу SQLite
  • Как правильно написать триггер на сумму чисел строки при появлении новой записи?

    phoinixrw
    @phoinixrw
    Архитектор информационных систем
    В комментарии автора ошибка.
    Для переопределения значения поля не требуется выполнять отдельное обновление, достаточно его пределить ДО вставки:

    CREATE TRIGGER maintable_pricetable_sum_trigger_insert
             BEFORE INSERT
                ON maintable_pricetable
          FOR EACH ROW
    BEGIN
        SET NEW.outcome = (NEW.transparency + NEW.color + NEW.pis + NEW.purity + NEW.intensity + NEW.typicality + NEW.purity2 + NEW.intensity2 + NEW.persistence + NEW.typicality2 + NEW.harmony);
    END;


    При этом, не совсем очевидно, почему сумма не считается во время UPDATE? Для этого требуется создать такой же триггер на UPDATE:

    CREATE TRIGGER maintable_pricetable_sum_trigger_update
             BEFORE UPDATE
                ON maintable_pricetable
          FOR EACH ROW
    BEGIN
        SET NEW.outcome = (NEW.transparency + NEW.color + NEW.pis + NEW.purity + NEW.intensity + NEW.typicality + NEW.purity2 + NEW.intensity2 + NEW.persistence + NEW.typicality2 + NEW.harmony);
    END;


    И кстати, когда бы автор дошел до момента обновления суммы во время UPDATE, то он бы начал веселую борьбу с рекурсией.
    Ответ написан
    Комментировать