使用SQL触发器

时间:2014-08-13 14:15:20

标签: mysql sql triggers

我有一个包含4列的SQL表(简化),如图所示

enter image description here

当需求状态变为“完成”时,我希望其优先级为空,并且所有具有上述优先级的需求都会减少。

例如,如果第二个需求:“Bread”为“Done”,则其优先级将设置为null,我希望“Butter”的优先级为2,“Jam”的优先级为3。

我需要一个触发器吗?如果是这样的话(引擎:InnoDB),我可以帮忙吗。

1 个答案:

答案 0 :(得分:0)

是的,你需要一个触发器。

DELIMITER |
CREATE TRIGGER modify_priority_trigger BEFORE UPDATE ON your_table
FOR EACH ROW 
begin
    if NEW.priority = 'Done'
    then
       update your_table
       set priority = priority - 1
       where priority is not null
       and priority > NEW.priority;

       set NEW.priority = NULL;
    end if;
end
|
delimiter ;

上面的触发器会在您的表更新时触发。首先,它递减其他记录的优先级,然后将当前优先级设置为null。