sql >> Databáze >  >> RDS >> Mysql

MySql Trigger Update vyberte součet po vložení

Zkuste

CREATE TRIGGER NewTrigger 
AFTER INSERT ON Transactions
FOR EACH ROW
UPDATE Accounts a
   SET a.AccountBalance = 
    (SELECT SUM(TransactionAmount) 
       FROM Transactions
      WHERE AccountID = a.AccountID)
 WHERE a.AccountID = NEW.AccountID;

Zde je SQLFiddle demo.

AKTUALIZACE :Protože spouštěče nejsou dostupné, zkuste zabalit INSERT a UPDATE do uložené procedury, jako je tato

DELIMITER $$
CREATE PROCEDURE AddTransaction(IN aid INT, amount DECIMAL(11, 2)) 
BEGIN
  START TRANSACTION;
  INSERT INTO Transactions (AccountID, TransactionAmount)
  VALUES (aid, amount);
  UPDATE Accounts a
     SET a.AccountBalance = 
      (SELECT SUM(TransactionAmount) 
         FROM Transactions
        WHERE AccountID = a.AccountID)
   WHERE a.AccountID = aid;
   COMMIT;
END $$
DELIMITER ;

A pak to použijte

CALL AddTransaction(1, 10.50);

Zde je SQLFiddle demo pro tento scénář.




  1. Zkraťte (ne zaokrouhlujte) desetinná místa v SQL Server

  2. získat obrázky z mysql pomocí php jquery ajax a zobrazit je na stránce html uvnitř DIV

  3. překročen maximální počet rekurzivních úrovní SQL (50).

  4. Najděte poškozené objekty na serveru SQL Server