sql >> Databasteknik >  >> RDS >> Mysql

MySQL-utlösare efter infogning och efter uppdatering

Se till att du ändrar avgränsaren innan du definierar utlösaren. Se också till att du använder samma tabell- och kolumnnamn när du skapar tabellen och utlösaren (du använder att och attendance och SID och StudID , i dina exempel).

Som den är, orsakade triggerdefinitionen inget fel när jag testade den i MySQL 5.1.55 efter att ha ställt in avgränsaren.

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 ;


  1. öka radnumret när värdet på fältet ändras i Oracle

  2. Finkornig passerkontroll

  3. MySQL:Multiple Inserts för en enda kolumn

  4. Django raw()-fråga, beräknat fält i WHERE-satsen