我在MySQL中创建了一个触发器,但是我有一个问题,MySQL返回“MySQL返回一个空结果集(即零行)”;
CREATE TRIGGER insert_transaction BEFORE
INSERT ON transaction
FOR EACH ROW
BEGIN
DECLARE montantTotalTransaction FLOAT;
DECLARE montantObjet FLOAT;
DECLARE montantTotalNewTransaction FLOAT;
DECLARE idPotObjet INTEGER;
DECLARE idPotAmi INTEGER;
SET @montantTotalTransaction := (SELECT IFNULL(ROUND(SUM(montant),2),0) FROM objet o, transaction t WHERE o.id = NEW.id_objet and t.id_objet = o.id);
SET @prixObjet := (SELECT prix FROM objet WHERE id = NEW.id_objet);
SET @montantTotalNewTransaction := @montantTotalTransaction + NEW.montant;
SET @idPotObjet := (SELECT id_pot FROM objet WHERE id = NEW.id_objet);
SET @idPotAmi := (SELECT id_pot FROM ami WHERE nom = NEW.id_ami);
IF NEW.montant < 0 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Le montant de la transaction ne peut être négatif';
END IF;
IF @montantTotalNewTransaction > @prixObjet THEN
SIGNAL SQLSTATE '45001' SET MESSAGE_TEXT = 'La somme de toutes les transactions sur cet objet est plus grande que le prix de l\'objet';
END IF;
IF @idPotObjet <> @idPotAmi THEN
SIGNAL SQLSTATE '45004' SET MESSAGE_TEXT = 'L\'ami et l\'objet n\'appartiennent pas au même pot';
END IF;
END;
一个想法?
提前感谢!!