需要帮助Mysql Trigger

时间:2013-04-23 14:05:54

标签: mysql triggers

我正在尝试编写一个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

1 个答案:

答案 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;