我正在尝试编写一个mysql触发器来根据同一个表中其他字段的值更新字段。
我有一个包含3个复选框字段的表格,即checkbox_1,checkbox_2,checkbox_3。我有另一个字段是第4个字段,我需要根据checkbox1 / 2/3值中的值更新“status_status”字段。如果所有复选框值都为1,我想将字段status_status更新为1.Below是我想要做的。
delimiter $$
create trigger emp_final_status
after update on tester.status_master
for each row
begin
if checkbox_1 = '1' and checkbox_2= '1' and checkbox_3= '1'
then
update tester.status_master set status_status=1;
END IF;
END
答案 0 :(得分:0)
当引用要更新的行的字段时,使用OLD引用更改前的值,使用NEW引用更改后的值:
delimiter $$
create trigger emp_final_status
BEFORE update on tester.status_master
for each row
begin
if NEW.checkbox_1 = '1' and NEW.checkbox_2= '1' and NEW.checkbox_3= '1'
then
set NEW.status_status=1;
END IF;
END
我还将触发器从AFTER更改为BEFORE。在BEFORE触发器中,您可以影响更新的值。
我在条件内改变了你的代码。在那里,您的原始代码是:
update tester.status_master set status_status=1;
这是一个没有update
子句的where
语句,这意味着,您要求set status_status=1
表格中的所有行!
相反,您只想更改当前正在处理的一行:
set NEW.status_status=1;