插入触发器后的mysql,该触发器更新另一个表的列

我正在尝试编写触发器,我有下表:BookingRequest:


  +-----------+---------+------+-----+---------+----------------+

    | Field     | Type    | Null | Key | Default | Extra          |

    +-----------+---------+------+-----+---------+----------------+

    | idRequest | int(11) | NO   | PRI | NULL    | auto_increment |

    | roomClass | int(11) | NO   |     | NULL    |                |

    | inDate    | date    | NO   |     | NULL    |                |

    | outDate   | date    | NO   |     | NULL    |                |

    | numOfBeds | int(11) | NO   |     | NULL    |                |

    | status    | int(11) | NO   | MUL | NULL    |                |

    | idUser    | int(11) | NO   | MUL | NULL    |                |

    +-----------+---------+------+-----+---------+----------------+

状态表:


+------------+--------------------------------------------------+------+-----+---------+-------+

| Field      | Type                                             | Null | Key | Default | Extra |

+------------+--------------------------------------------------+------+-----+---------+-------+

| idStatus   | int(11)                                          | NO   | PRI | NULL    |       |

| nameStatus | enum('underConsideration','approved','rejected') | YES  |     | NULL    |       |

+------------+--------------------------------------------------+------+-----+---------+-------+


我需要一个触发器,如果将具有相同ID的请求插入到OccupiedRoom表中,它将把BookingReques中的状态更改为1,所以我尝试了类似的操作


create trigger occupy_trig after insert on OccupiedRoom 

for each row

begin

  if BookingRequest.idRequest= NEW.idRequest

   then

       update BookingRequest

       set status = '1';

       where idRequest = NEW.idRequest;


    end if;

END;

而且它不起作用,所以任何建议都非常有用


德玛西亚99
浏览 1057回答 3
3回答

Helenr

尝试这个:DELIMITER $$CREATE TRIGGER occupy_trigAFTER INSERT ON `OccupiedRoom` FOR EACH ROWbegin       DECLARE id_exists Boolean;       -- Check BookingRequest table       SELECT 1       INTO @id_exists       FROM BookingRequest       WHERE BookingRequest.idRequest= NEW.idRequest;       IF @id_exists = 1       THEN           UPDATE BookingRequest           SET status = '1'           WHERE idRequest = NEW.idRequest;        END IF;END;$$DELIMITER ;

噜噜哒

有了您的需求,您就不需要了BEGIN END,IF而不必要SELECT的触发了。所以你可以简化为CREATE TRIGGER occupy_trig AFTER INSERT ON occupiedroom FOR EACH ROW  UPDATE BookingRequest     SET status = 1   WHERE idRequest = NEW.idRequest;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MySQL