0

我的一个表有一个触发器,该触发器将在更新表后执行,以检查更新的 id 值的字段值是否为真,如果任何值为假,则更新其他表为假,否则为真。

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$$
4

1 回答 1

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$$
于 2012-06-14T13:09:09.760 回答