插入触发器后更新另一个表的列
此查询尝试在 MySQL 中创建一个触发器来更新 BookingRequest 表中的列当一行插入 OccupiedRoom 表时。但是,提供的触发器无法按预期工作。
要解决此问题,这里是触发器的更正版本:
DELIMITER $$
CREATE TRIGGER占领_trig
AFTER插入每个占用的房间ROW
开始
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;
$$ 分隔符; **触发详情:** * 触发器是使用“AFTER INSERT”子句定义的,这意味着它在将行插入“OccupiedRoom”表后执行。 * 触发器使用“FOR EACH ROW”子句单独处理每个插入的行。 * 扳机体内: * 它声明一个布尔变量`@id_exists`来检查插入的`OccupiedRoom`行中的`idRequest`是否存在于`BookingRequest`表中。 * 检查`BookingRequest`表以确定新插入的`OccupiedRoom`行的`idRequest`是否存在。如果是,它将`@id_exists`设置为`1`。 * 如果“@id_exists”为“1”,则会将“BookingRequest”表中的“status”列更新为“1”,其中“idRequest”与“OccupiedRoom”表中的新“idRequest”相匹配。
以上是如何使用插入后触发器正确更新 MySQL 中的表列?的详细内容。更多信息请关注PHP中文网其他相关文章!