触发器更新STACKED取决于其他列值

时间:2014-10-18 08:46:51

标签: mysql

这是触发器

这是表Stracture:

id:               int
item_counting:    int
item_disterbute:  int
item_stor:        int

现在仅限更新:

BEGIN
        IF item_counting = NEW.item_disterbute THEN
            SET NEW.item_stor = 2;

        ELSEIF item_counting > NEW.item_disterbute THEN
            SET NEW.item_stor = 3;

        ELSE
            SET NEW.item_stor = 4;

        END IF;
    END

现在我如何保留 item_counting

的列

此处更新错误:1054 - Unknown column 'item_counting' in 'field list'

1 个答案:

答案 0 :(得分:0)

您可以使用关键字oldnew来获取列值,具体取决于触发器。

假设您正在运行before update触发器,那么使用old.column_name将为您提供当前其拥有的值,并且new.column_name是为更新提供的值,您可以设置自己的

所以在你的情况下,它将是

    IF old.item_counting = NEW.item_disterbute THEN
        SET NEW.item_stor = 2;

    ELSEIF old.item_counting > NEW.item_disterbute THEN
        SET NEW.item_stor = 3;

    ELSE
        SET NEW.item_stor = 4;

    END IF;