我有一个包含4列的SQL表(简化),如图所示
当需求状态变为“完成”时,我希望其优先级为空,并且所有具有上述优先级的需求都会减少。
例如,如果第二个需求:“Bread”为“Done”,则其优先级将设置为null,我希望“Butter”的优先级为2,“Jam”的优先级为3。
我需要一个触发器吗?如果是这样的话(引擎:InnoDB),我可以帮忙吗。
答案 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。