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. PHPでmysqli_query()を使用するにはどうすればよいですか?

    2. Oracleの「CONNECTBYPRIOR」、および「ORDERSIBLINGSBY」に相当するSQLServer

    3. Oracle11gr2にProceduralOptionをインストールする方法

    4. すべての着信接続を受け入れるようにPostgreSQLを構成する方法