MYSQL触发器从表中选择*并检查每个值并更新其他表

时间:2012-06-14 12:45:30

标签: mysql triggers

我正在我的一个表中有一个触发器,它将在更新表后执行以检查id值的字段值是否更新,如果任何值为false则为true,更新其他表为false else与真实。

DELIMITER $$
CREATE
TRIGGER users_lookups
AFTER UPDATE ON UsersValidations
FOR EACH ROW
BEGIN
SELECT * FROM UsersValidations where id=New.id;
/* MY SCENARIO 
{   HOW to do this portion

  if(UsersValidations.value1 =="true" and UsersValidations.value2=="true" and UsersValidations.value3=="true")
    {
         update table2 set myvalue="true" where id=New.id;
    }
    else
    {
         update table2 set myvalue="false" where id=New.id;
    }

}*/

END$$

1 个答案:

答案 0 :(得分:1)

您不需要查询表,因为触发器已经知道正在操作的行的值。只需使用触发器提供的New构造。

这是你的触发器的更新版本,虽然我在这台计算机上没有mysql,所以我无法验证语法。考虑这种伪代码。

DELIMITER $$
CREATE
TRIGGER users_lookups
AFTER UPDATE ON UsersValidations
FOR EACH ROW
BEGIN

  if(New.value1 =="true" and New.value2=="true" and New.value3=="true")
    {
         update table2 set myvalue="true" where id=New.id;
    }
    else
    {
         update table2 set myvalue="false" where id=New.id;
    }


END$$