Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL тригер след вмъкване и след актуализация

Уверете се, че сте променили разделителя, преди да дефинирате тригера. Също така се уверете, че използвате едни и същи имена на таблица и колона, когато създавате таблицата и тригера (използвате att и attendance и SID и StudID , във вашите примери).

Както е, дефиницията на тригера не предизвика грешка, когато я тествах в MySQL 5.1.55 след настройка на разделителя.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Съхранявайте PHP код в MySQL и го накарайте да работи

  2. Вземете insert_id за всички редове, вмъкнати в една mysqli заявка (множество стойности)

  3. Как да съхранявате данни, чийто тип може да бъде число, дата или низ в mysql

  4. Изявление на Mysql за избор на отделни редове от две колони

  5. Ред за изключване на MySQL