Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Trigger nach dem Einfügen und nach dem Update

Stellen Sie sicher, dass Sie das Trennzeichen ändern, bevor Sie den Trigger definieren. Stellen Sie außerdem sicher, dass Sie dieselben Tabellen- und Spaltennamen verwenden, wenn Sie die Tabelle und den Trigger erstellen (Sie verwenden att und attendance , und SID und StudID , in Ihren Beispielen).

So wie es ist, verursachte die Trigger-Definition keinen Fehler, als ich sie in MySQL 5.1.55 nach dem Setzen des Trennzeichens testete.

delimiter $$
CREATE TRIGGER `att_up` 
  AFTER UPDATE ON `attendance`
FOR EACH ROW 
BEGIN
  DECLARE Zeros INT;
  DECLARE Ones INT;
  DECLARE total INT;
  DECLARE attend FLOAT;
  SELECT SUM(8-(h1+h2+h3+h4+h5+h6+h7+h8)), 
         SUM(h1+h2+h3+h4+h5+h6+h7+h8),
         SUM(8-(h1+h2+h3+h4+h5+h6+h7+h8)) + SUM(h1+h2+h3+h4+h5+h6+h7+h8)
    INTO Zeros, Ones, Total FROM attendance 
    WHERE SID=NEW.SID;
  SET attend=((Zeros-Ones)/total)/100;
  INSERT INTO per (SID, CID, per) values (NEW.SID, NEW.CID, attend)
    ON DUPLICATE KEY UPDATE per=attend;
END$$
delimiter ;